画像から Google Slides および Google Drive を使って無料で PDF を作成

上級

これはDesign, AI, Marketing分野の自動化ワークフローで、20個のノードを含みます。主にSet, Sort, Limit, Filter, GoogleDriveなどのノードを使用、AI技術を活用したスマート自動化を実現。 Google SlidesとGoogle Driveを使って画像から無料でPDFを作成

前提条件
  • Google Drive API認証情報
  • ターゲットAPIの認証情報が必要な場合あり
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
  "meta": {
    "instanceId": "632f65756c0dfa07ac80bbf68a720ffbe7ae34338cadcb46b58428622d4ef469",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "65d94bcc-e528-46a5-be6e-393a06ec620c",
      "name": "「Test workflow」クリック時",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -360,
        200
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "36d5034f-6d1a-4619-a009-f6e2e30ec7a5",
      "name": "作成日で並べ替え",
      "type": "n8n-nodes-base.sort",
      "position": [
        1140,
        200
      ],
      "parameters": {
        "options": {},
        "sortFieldsUi": {
          "sortField": [
            {
              "fieldName": "createdTime"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "bc3a71c4-e073-4ef0-b74e-62e6005ee3c7",
      "name": "アイテムをループ処理",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1360,
        200
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "5698ad5a-7635-423c-a63c-a1d5266551ea",
      "name": "画像権限を更新",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1800,
        200
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Sort by Created Date').item.json.id }}"
        },
        "options": {},
        "operation": "share",
        "permissionsUi": {
          "permissionsValues": {
            "role": "reader",
            "type": "anyone"
          }
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "2aQwB7XQiOAR6v4J",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "7862bbd3-2300-4dd5-9ad9-02c81d608f3d",
      "name": "スライドをPDFに変換",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        2020,
        0
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('CopyPdfTemplate').item.json.id }}"
        },
        "options": {
          "googleFileConversion": {
            "conversion": {
              "docsToFormat": "application/pdf",
              "slidesToFormat": "application/pdf"
            }
          }
        },
        "operation": "download"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "2aQwB7XQiOAR6v4J",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "07e69808-f221-4424-838c-e1d53ce7ca0c",
      "name": "制限: 1ページ",
      "type": "n8n-nodes-base.limit",
      "position": [
        1580,
        0
      ],
      "parameters": {
        "keep": "lastItems"
      },
      "typeVersion": 1
    },
    {
      "id": "0028a6c9-460b-4ee9-968c-f46b6102fd44",
      "name": "フィルター: 画像のみ",
      "type": "n8n-nodes-base.filter",
      "position": [
        920,
        200
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "12999f01-4775-46ab-bc60-1c1e68a3c4d2",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.mimeType }}",
              "rightValue": "image/png"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "9d0898a8-4f62-4c03-bf9f-5f62177854a7",
      "name": "最終PDFファイルをアップロード",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        2240,
        0
      ],
      "parameters": {
        "name": "={{ $('Set Pdf File Name').item.json.presentation_title }}",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Get Folder Id w Presentation').item.json.parents[0] }}"
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "2aQwB7XQiOAR6v4J",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "0d51a9da-0a99-47ab-a356-fd084d3d3a58",
      "name": "付箋メモ",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -820,
        -240
      ],
      "parameters": {
        "color": 4,
        "width": 400,
        "height": 1020,
        "content": "## 📚 Create a PDF from Google Drive Images\n\nThis workflow takes all images from a Google Drive folder you specify, sorts them by creation date, and compiles them into a single PDF using a Google Slides template.\n\n**Key Things to Know Before You Start:**\n\n  **Set Your File Name:**\n- Go to the **'Set Pdf File Name'** node \n- Update the `presentation_title` value with your desired PDF name.\n\n🔑 **Connect Google Accounts:**\n- Authenticate your Google Drive & Google Slides accounts in all relevant Google nodes and HTTP nodes.\n\n📏 **Use a Google Slides Template for Custom Page Size:**\n- Google Slides defaults to a 16:9 aspect ratio. If you need specific PDF dimensions (e.g., A4, US Letter, square), **first create a Google Slides file with your desired page size.**\n- Then, select this custom Google Slides file in the **'CopyPdfTemplate'** node (under 'File').\n\n🖼️ **Image & Folder Setup:**\n- In the **'CopyPdfTemplate'** node, also select the Google Drive **Folder** where your source images are located. The copied presentation and final PDF will also be created here.\n- The workflow filters for `.png` images by default. To use other types (like JPG), update the **'Filter: Only Images'** node.\n\n⚠️ **Image Size & Workflow Limits:**\n- Google Slides may have limitations on individual image size and the overall PDF file size when exporting.\n- This workflow works well for smaller presentations (10–20 pages). Larger files may run into errors or performance issues during export.\n\n💰 **Cost:** Free to use (relies on standard Google API calls, which are generally within free tier limits for typical usage)."
      },
      "typeVersion": 1
    },
    {
      "id": "478b42b2-ad5a-4e2d-bbe0-88f412cb57b2",
      "name": "PDFファイル名を設定",
      "type": "n8n-nodes-base.set",
      "position": [
        -140,
        200
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "b994aa5e-1580-43f6-90b0-f0ea8efd9614",
              "name": "presentation_title",
              "type": "string",
              "value": "[Your PDF Name Here]"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "eb4ef58f-77cd-408a-825a-720ced2a07f1",
      "name": "最初の空白スライドを削除",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1800,
        0
      ],
      "parameters": {
        "url": "=https://slides.googleapis.com/v1/presentations/{{ $('Get Created Presentation').item.json.presentationId }}:batchUpdate",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"requests\": [\n    {\n      \"deleteObject\": {\n        \"objectId\": \"{{ $('Get Created Presentation').item.json.slides[0].objectId }}\" \n      } \n    } \n  ]\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "googleSlidesOAuth2Api"
      },
      "credentials": {
        "googleSlidesOAuth2Api": {
          "id": "puHiyhiyJ7v8EzCp",
          "name": "Google Slides account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "fccfdcd0-9407-45bb-9065-ba0d0d63b1a6",
      "name": "PDFテンプレートをコピー",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        80,
        200
      ],
      "parameters": {
        "name": "={{ $json.presentation_title }}",
        "fileId": {
          "__rl": true,
          "mode": "list",
          "value": "1_Mfgb7lUD8tXRg3cXeIQXjQ9vgCG-TzwOoWVok_ROQ8",
          "cachedResultUrl": "https://docs.google.com/presentation/d/1_Mfgb7lUD8tXRg3cXeIQXjQ9vgCG-TzwOoWVok_ROQ8/edit?usp=drivesdk",
          "cachedResultName": "Book_Template"
        },
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "",
          "cachedResultUrl": "",
          "cachedResultName": ""
        },
        "operation": "copy",
        "sameFolder": false
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "2aQwB7XQiOAR6v4J",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "e9fb8627-1385-474c-badc-7aa1645a99da",
      "name": "作成済みプレゼンテーションを取得",
      "type": "n8n-nodes-base.googleSlides",
      "position": [
        300,
        200
      ],
      "parameters": {
        "operation": "get",
        "presentationId": "={{ $('CopyPdfTemplate').item.json.id }}"
      },
      "credentials": {
        "googleSlidesOAuth2Api": {
          "id": "puHiyhiyJ7v8EzCp",
          "name": "Google Slides account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "c6429ca5-db95-4e33-b470-43a5df1feed3",
      "name": "プレゼンテーションを含むフォルダIDを取得",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        500,
        200
      ],
      "parameters": {
        "url": "=https://www.googleapis.com/drive/v3/files/{{ $json.presentationId }}?fields=parents",
        "options": {},
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "googleDriveOAuth2Api"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "2aQwB7XQiOAR6v4J",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "bd8c64b0-f8a4-4bf6-bb3a-cabba5597fed",
      "name": "フォルダ内の全ファイルを取得",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        700,
        200
      ],
      "parameters": {
        "filter": {
          "folderId": {
            "__rl": true,
            "mode": "id",
            "value": "={{ $json.parents[0] }}"
          }
        },
        "options": {
          "fields": [
            "*"
          ]
        },
        "resource": "fileFolder",
        "returnAll": true,
        "queryString": "="
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "2aQwB7XQiOAR6v4J",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "f1680bfa-8ce1-4b0e-af59-83332e9511a0",
      "name": "空白スライドを作成",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1580,
        200
      ],
      "parameters": {
        "url": "=https://slides.googleapis.com/v1/presentations/{{ $('CopyPdfTemplate').item.json.id }}:batchUpdate",
        "method": "POST",
        "options": {},
        "jsonBody": "{\n  \"requests\": [\n    {\n      \"createSlide\": {\n        \"slideLayoutReference\": {\n          \"predefinedLayout\": \"BLANK\"\n          \n        } \n      } \n    } \n  ]\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "googleSlidesOAuth2Api"
      },
      "credentials": {
        "googleSlidesOAuth2Api": {
          "id": "puHiyhiyJ7v8EzCp",
          "name": "Google Slides account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "0c883f43-b498-4da5-a5ee-ee44d11bb7f6",
      "name": "スライドに画像を追加",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2020,
        280
      ],
      "parameters": {
        "url": "=https://slides.googleapis.com/v1/presentations/{{ $('CopyPdfTemplate').item.json.id }}:batchUpdate",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"requests\": [\n    {\n      \"createImage\": {\n        \"url\": \"{{ $('Sort by Created Date').item.json.webContentLink }}\",\n        \"elementProperties\": {\n           \"size\": {\n            \"width\": {\n              \"unit\": \"{{ $('Get Created Presentation').item.json.pageSize.width.unit }}\",\n              \"magnitude\": {{ $('Get Created Presentation').item.json.pageSize.width.magnitude }}\n            },\n            \"height\": {\n              \"unit\": \"{{ $('Get Created Presentation').item.json.pageSize.height.unit }}\",\n              \"magnitude\": {{ $('Get Created Presentation').item.json.pageSize.height.magnitude }}\n            }\n          },\n  \"transform\": {\n    \"scaleX\":  1,\n    \"scaleY\":  1,\n    \"translateX\": 0,\n    \"translateY\": 0,\n    \"unit\": \"PT\"\n  },\n          \"pageObjectId\": \"{{ $('Create An Empty Slide').item.json.replies[0].createSlide.objectId }}\" \n        } \n      } \n    } \n  ]\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "googleSlidesOAuth2Api"
      },
      "credentials": {
        "googleSlidesOAuth2Api": {
          "id": "puHiyhiyJ7v8EzCp",
          "name": "Google Slides account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "4ba1bd72-7097-4774-9ce6-a770d4e8cacc",
      "name": "付箋メモ2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        20,
        -180
      ],
      "parameters": {
        "color": 6,
        "width": 440,
        "height": 620,
        "content": "## Configure Template & Image Folder\n\n⚙️ In the **'CopyPdfTemplate'** node configure:\n\n1.  **File -> From list:** Select your Google Slides template file. This will be the base for your PDF. If you want book orientation, it should be specified in the template in File-> Page Setup\n\n2.  **Parent Folder -> From list:** Choose the Google Drive folder where your source images are located.\n\n➡️ **Important:** The workflow will create the final PDF in the *same folder* where you have your images"
      },
      "typeVersion": 1
    },
    {
      "id": "e1e1bb1f-d73e-4dd5-b665-e669b5c343b1",
      "name": "付箋メモ3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        860,
        -180
      ],
      "parameters": {
        "color": 6,
        "width": 420,
        "height": 600,
        "content": "## Image Filter Information\n\n🖼️ **Image Format Note** \n\nThis workflow is preset to find and process `.png` images from your Google Drive folder (using MIME type `image/png`).\n\nIf you're using other image formats (e.g., JPG, GIF), you'll need to update the **'Filter: Only Images'** node.\n\nSpecifically, change the filter condition from `image/png` to the correct MIME type for your image files (e.g., `image/jpeg` for JPGs)."
      },
      "typeVersion": 1
    },
    {
      "id": "ba71a7ef-5309-4eb9-9aa8-a0bf275127a7",
      "name": "付箋メモ4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1320,
        500
      ],
      "parameters": {
        "color": 6,
        "width": 840,
        "height": 340,
        "content": "## How the Image-to-Slide Process Works\n\n🔄 **How Images Are Added to Slides** \n1.  The workflow fetches all images (that pass the filter) from your specified Google Drive folder.\n2.  It sorts these images by their creation date.\n3.  For each image, the workflow:\n    a. Creates a new blank slide in your Google Slides presentation.\n    b. Updates the image's permissions in Google Drive to be publicly readable (this is a temporary step, necessary for the Google Slides API to insert the image using its URL).\n    c. Adds the image to the new slide, fitting it to the slide's dimensions.\n\n**Final Touch:** After all images are added, the *very first slide* of the presentation (which is a blank page from your template) is deleted."
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "07e69808-f221-4424-838c-e1d53ce7ca0c": {
      "main": [
        [
          {
            "node": "eb4ef58f-77cd-408a-825a-720ced2a07f1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "fccfdcd0-9407-45bb-9065-ba0d0d63b1a6": {
      "main": [
        [
          {
            "node": "e9fb8627-1385-474c-badc-7aa1645a99da",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "bc3a71c4-e073-4ef0-b74e-62e6005ee3c7": {
      "main": [
        [
          {
            "node": "07e69808-f221-4424-838c-e1d53ce7ca0c",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "f1680bfa-8ce1-4b0e-af59-83332e9511a0",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "478b42b2-ad5a-4e2d-bbe0-88f412cb57b2": {
      "main": [
        [
          {
            "node": "fccfdcd0-9407-45bb-9065-ba0d0d63b1a6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0028a6c9-460b-4ee9-968c-f46b6102fd44": {
      "main": [
        [
          {
            "node": "36d5034f-6d1a-4619-a009-f6e2e30ec7a5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "36d5034f-6d1a-4619-a009-f6e2e30ec7a5": {
      "main": [
        [
          {
            "node": "bc3a71c4-e073-4ef0-b74e-62e6005ee3c7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7862bbd3-2300-4dd5-9ad9-02c81d608f3d": {
      "main": [
        [
          {
            "node": "9d0898a8-4f62-4c03-bf9f-5f62177854a7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f1680bfa-8ce1-4b0e-af59-83332e9511a0": {
      "main": [
        [
          {
            "node": "5698ad5a-7635-423c-a63c-a1d5266551ea",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0c883f43-b498-4da5-a5ee-ee44d11bb7f6": {
      "main": [
        [
          {
            "node": "bc3a71c4-e073-4ef0-b74e-62e6005ee3c7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "eb4ef58f-77cd-408a-825a-720ced2a07f1": {
      "main": [
        [
          {
            "node": "7862bbd3-2300-4dd5-9ad9-02c81d608f3d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e9fb8627-1385-474c-badc-7aa1645a99da": {
      "main": [
        [
          {
            "node": "c6429ca5-db95-4e33-b470-43a5df1feed3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5698ad5a-7635-423c-a63c-a1d5266551ea": {
      "main": [
        [
          {
            "node": "0c883f43-b498-4da5-a5ee-ee44d11bb7f6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c6429ca5-db95-4e33-b470-43a5df1feed3": {
      "main": [
        [
          {
            "node": "bd8c64b0-f8a4-4bf6-bb3a-cabba5597fed",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "bd8c64b0-f8a4-4bf6-bb3a-cabba5597fed": {
      "main": [
        [
          {
            "node": "0028a6c9-460b-4ee9-968c-f46b6102fd44",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "65d94bcc-e528-46a5-be6e-393a06ec620c": {
      "main": [
        [
          {
            "node": "478b42b2-ad5a-4e2d-bbe0-88f412cb57b2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
よくある質問

このワークフローの使い方は?

上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。

このワークフローはどんな場面に適していますか?

上級 - デザイン, 人工知能, マーケティング

有料ですか?

このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。

ワークフロー情報
難易度
上級
ノード数20
カテゴリー3
ノードタイプ10
難易度説明

上級者向け、16ノード以上の複雑なワークフロー

作成者
Nadia Privalikhina

Nadia Privalikhina

@nadiap

Automation consultant with a dev brain and a get-things-done mindset. I help marketing and content teams build automation workflows, learn the tools, and actually use them in their business

外部リンク
n8n.ioで表示

このワークフローを共有

カテゴリー

カテゴリー: 34