Google Sheetsとメール通知を使用してタイトルの明確さを最適化する

中級

これはContent Creation, Multimodal AI分野の自動化ワークフローで、14個のノードを含みます。主にIf, Code, EmailSend, FormTrigger, HttpRequestなどのノードを使用。 Google Sheetsとメール通知によるタイトルの明確さの最適化

前提条件
  • ターゲットAPIの認証情報が必要な場合あり
  • Google Sheets API認証情報
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
  "meta": {
    "instanceId": "60c025075753afcab9f803964b4caaca9402f435deb4efafbb8e3b93b54d8752",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "1dc70980-1f3d-4352-8f39-9465eb0357ff",
      "name": "フォーム送信時",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -80,
        0
      ],
      "webhookId": "a3954bfd-5e79-48fe-a4a9-e6fa35122c14",
      "parameters": {
        "options": {},
        "formTitle": "YouTube Video giveaway ",
        "formFields": {
          "values": [
            {
              "fieldLabel": "url",
              "requiredField": true
            }
          ]
        },
        "formDescription": "YouTube Video giveaway "
      },
      "typeVersion": 2.2
    },
    {
      "id": "bc236f4c-6d15-447b-94a8-d1d435455e20",
      "name": "YouTubeコメントを取得",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        176,
        0
      ],
      "parameters": {
        "url": "https://youtube-comments-scraper.p.rapidapi.com/comment.php",
        "method": "POST",
        "options": {
          "response": {
            "response": {
              "fullResponse": true
            }
          }
        },
        "sendBody": true,
        "contentType": "multipart-form-data",
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "url",
              "value": "={{ $json.url }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "x-rapidapi-host",
              "value": "youtube-comments-scraper.p.rapidapi.com"
            },
            {
              "name": "x-rapidapi-key",
              "value": "your key"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "155352c4-d1d6-49c3-a86f-a65176acba98",
      "name": "API回答ステータスを確認",
      "type": "n8n-nodes-base.if",
      "position": [
        448,
        0
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "38976149-dd8b-452f-a2d1-cd4c88dfa791",
              "operator": {
                "type": "number",
                "operation": "equals"
              },
              "leftValue": "={{ $json.statusCode }}",
              "rightValue": "=200"
            }
          ]
        },
        "looseTypeValidation": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "eefb9182-3705-4c12-9e58-7ae37a3e5c88",
      "name": "ランダムなコメント投稿者を選択",
      "type": "n8n-nodes-base.code",
      "position": [
        720,
        0
      ],
      "parameters": {
        "jsCode": "// Extract the array of comment items from the API response\nconst comments = $input.first().json.body.items || [];\n\n// Extract authorDisplayName safely\nconst authors = comments\n  .map(item => {\n    // Check if snippet and topLevelComment exist before accessing authorDisplayName\n    if (item.snippet && item.snippet.topLevelComment && item.snippet.topLevelComment.snippet) {\n      return item.snippet.topLevelComment.snippet.authorDisplayName;\n    }\n    return null; // or undefined\n  })\n  .filter(name => !!name); // filter out null/undefined\n\nif (authors.length === 0) {\n  // No authors found, return empty or null\n  return [{ json: { randomAuthorDisplayName: null } }];\n}\n\n// Randomly select one authorDisplayName\nconst randomIndex = Math.floor(Math.random() * authors.length);\nconst randomAuthor = authors[randomIndex];\n\n// Return as output\nreturn [{ json: { randomAuthorDisplayName: randomAuthor } }];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "ac6097b0-8fd5-41d3-8733-e6d61217b822",
      "name": "通知:無効なAPI回答",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        704,
        320
      ],
      "webhookId": "06e6ac0e-286b-432a-b233-a61817cab593",
      "parameters": {
        "html": "Hello,\n\nThe attempt to fetch comments from the provided YouTube URL did not succeed.  \nPlease verify the URL and try again.\n\nIf the problem persists, please check the API key or contact support.\n\nBest regards,  \nYouTube Giveaway Bot\n",
        "options": {},
        "subject": "YouTube Comments Scraper: API Request Failed",
        "toEmail": "owaner@gmail.com",
        "fromEmail": "admin@gmail.com"
      },
      "credentials": {
        "smtp": {
          "id": "nPwKPPgVavimTJX4",
          "name": "SMTP account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "b28e03d1-0103-4453-97bf-cdb69ecb3c49",
      "name": "当選者メール通知",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        1312,
        -64
      ],
      "webhookId": "b8e21334-f8bb-442e-8060-e3bd170f4f6a",
      "parameters": {
        "html": "=Hello ,\n\nThe YouTube giveaway has concluded, and the winner has been selected!\n\nWinner: {{$json.randomAuthorDisplayName}}\n\nThe winner's details have been logged in the spreadsheet for your records.\n\nBest regards,  \nYour Giveaway Automation Bot\n",
        "options": {},
        "subject": "=Congratulations! {{$json.randomAuthorDisplayName}} is the Winner of the Giveaway!",
        "toEmail": "=owner@gmail.com",
        "fromEmail": "admin@gmail.com"
      },
      "credentials": {
        "smtp": {
          "id": "H0f4Gja9ECFRA34L",
          "name": "SMTP account 2"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "00ed6cc0-8f7f-44e9-bf69-cb7512c49163",
      "name": "当選者をGoogleシートに記録",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1008,
        -48
      ],
      "parameters": {
        "columns": {
          "value": {
            "Url": "={{ $('On form submission').item.json.url }}",
            "Date": "={{ $('On form submission').item.json.submittedAt }}",
            "Winner": "={{ $json.randomAuthorDisplayName }}"
          },
          "schema": [
            {
              "id": "Date",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Url",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Winner",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Winner",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": ""
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "id": "Rt0RWApx8PL9t0RF",
          "name": "Google Docs account"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "7345d6e6-dde3-4880-85a5-e34780ad9335",
      "name": "付箋",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        128,
        -112
      ],
      "parameters": {
        "height": 256,
        "content": "Sends a POST request to RapidAPI to scrape YouTube comments from the given URL.\nIncludes API key and necessary headers for authentication."
      },
      "typeVersion": 1
    },
    {
      "id": "9f072800-bbac-412f-99a1-28a552ce9558",
      "name": "付箋1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -128,
        -112
      ],
      "parameters": {
        "height": 256,
        "content": "Triggers the workflow when a form with a YouTube URL is submitted.\nCaptures the URL input for further processing."
      },
      "typeVersion": 1
    },
    {
      "id": "26e755bc-4755-4dc7-a7d0-4f2f3cfbf0ca",
      "name": "付箋2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        384,
        -112
      ],
      "parameters": {
        "height": 256,
        "content": "Checks if the API response status code equals 200 (success).\nRoutes workflow based on success or failure of the API call."
      },
      "typeVersion": 1
    },
    {
      "id": "449460b5-3b24-42a0-957f-2a47363889bc",
      "name": "付箋3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        640,
        -112
      ],
      "parameters": {
        "height": 256,
        "content": "Extracts author names from the fetched comments.\nRandomly selects one commenter as the giveaway winner."
      },
      "typeVersion": 1
    },
    {
      "id": "023052db-e197-48ff-9567-62d2565cbf2e",
      "name": "付箋4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        672,
        192
      ],
      "parameters": {
        "height": 288,
        "content": "Sends an email notification if the API call fails or returns an invalid response.\nAlerts the admin to verify URL or API credentials."
      },
      "typeVersion": 1
    },
    {
      "id": "f814c860-8649-4f9b-bcb7-8f9a7a83d697",
      "name": "付箋5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        944,
        -176
      ],
      "parameters": {
        "height": 288,
        "content": "Appends the winner’s name, URL, and submission date to a Google Sheet.\nUses service account authentication for Google Sheets access."
      },
      "typeVersion": 1
    },
    {
      "id": "e4feec40-ba6b-4c15-b2a2-5525f4424dfd",
      "name": "付箋6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1264,
        -192
      ],
      "parameters": {
        "height": 272,
        "content": "Sends a congratulatory email announcing the giveaway winner.\nIncludes the winner’s name and relevant giveaway details."
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "1dc70980-1f3d-4352-8f39-9465eb0357ff": {
      "main": [
        [
          {
            "node": "bc236f4c-6d15-447b-94a8-d1d435455e20",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "bc236f4c-6d15-447b-94a8-d1d435455e20": {
      "main": [
        [
          {
            "node": "155352c4-d1d6-49c3-a86f-a65176acba98",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "eefb9182-3705-4c12-9e58-7ae37a3e5c88": {
      "main": [
        [
          {
            "node": "00ed6cc0-8f7f-44e9-bf69-cb7512c49163",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "155352c4-d1d6-49c3-a86f-a65176acba98": {
      "main": [
        [
          {
            "node": "eefb9182-3705-4c12-9e58-7ae37a3e5c88",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "ac6097b0-8fd5-41d3-8733-e6d61217b822",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "00ed6cc0-8f7f-44e9-bf69-cb7512c49163": {
      "main": [
        [
          {
            "node": "b28e03d1-0103-4453-97bf-cdb69ecb3c49",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
よくある質問

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

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

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

中級 - コンテンツ作成, マルチモーダルAI

有料ですか?

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

ワークフロー情報
難易度
中級
ノード数14
カテゴリー2
ノードタイプ7
難易度説明

経験者向け、6-15ノードの中程度の複雑さのワークフロー

外部リンク
n8n.ioで表示

このワークフローを共有

カテゴリー

カテゴリー: 34