フォーム送信をChatworkに自動通知するGAS連携の作り方

Sheet Lab GAS

💬

フォーム送信をChatworkに自動通知するGAS連携の作り方

GAS 🕐 約5分 ← Sheet Lab に戻る

申請フォームや問い合わせフォームが送信されたら、Chatworkに即座に通知したい。GASのフォームトリガーとChatwork APIを組み合わせれば、受信後数秒以内に通知が届く仕組みを作れます。

必要なもの

  • Googleフォーム(回答先スプレッドシートを作成済み)
  • ChatworkのAPIトークン(個人設定から取得)
  • 通知先のルームID

Chatwork APIトークンの取得

  1. Chatworkにログイン
  2. 右上のアイコン → サービス連携 → API
  3. パスワードを入力してAPIトークンを発行・コピー

ルームIDの確認

通知したいチャットを開き、URLの末尾の数字がルームIDです。

https://www.chatwork.com/#!rid 123456789
                                   ↑ これがルームID

テンプレートコード

// ======== 設定 ========
const CW_API_TOKEN = 'ここにChatwork APIトークンを貼り付ける';
const CW_ROOM_ID   = '123456789'; // 通知先ルームID
// ======================

function onFormSubmit(e) {
  // フォームの回答を取得
  const responses = e.namedValues;

  // 通知メッセージを組み立て
  let message = '[info][title]📋 フォームが送信されました[/title]';
  message += '送信日時:' + Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy/MM/dd HH:mm') + 'nn';

  for (const [question, answers] of Object.entries(responses)) {
    const answer = answers[0] || '(未入力)';
    message += `【${question}】n${answer}nn`;
  }
  message += '[/info]';

  // Chatworkに送信
  sendToChatwork(message);
}

function sendToChatwork(message) {
  const url     = `https://api.chatwork.com/v2/rooms/${CW_ROOM_ID}/messages`;
  const options = {
    method: 'post',
    headers: { 'X-ChatWorkToken': CW_API_TOKEN },
    payload: { body: message },
    muteHttpExceptions: true,
  };

  const response = UrlFetchApp.fetch(url, options);
  const code     = response.getResponseCode();

  if (code !== 200) {
    console.log('Chatwork送信エラー: ' + code + ' ' + response.getContentText());
  } else {
    console.log('Chatwork送信成功');
  }
}

設定手順

  1. 回答スプレッドシートを開く → 拡張機能 → Apps Script
  2. 上のコードを貼り付け
  3. CW_API_TOKENCW_ROOM_ID を設定
  4. 「実行」ボタンで onFormSubmit を手動実行して動作確認

フォームトリガーの設定(自動実行)

  1. エディタ左の時計アイコン → トリガーを追加
  2. 実行する関数:onFormSubmit
  3. イベントのソース:スプレッドシートから
  4. イベントの種類:フォーム送信時
  5. 保存

これで次回フォーム送信時から自動通知が有効になります。

応用:担当者への振り分け通知

フォームに「担当者を選んでください」という項目がある場合、回答に応じて別のルームに通知できます。

function onFormSubmit(e) {
  const responses = e.namedValues;
  const staff     = responses['担当者'][0];

  // 担当者ごとのルームIDマッピング
  const roomMap = {
    '山田': '111111111',
    '鈴木': '222222222',
    '佐藤': '333333333',
  };

  const roomId = roomMap[staff] || CW_ROOM_ID; // デフォルトルームにフォールバック

  let message = `[info][title]${staff} 宛の申請が届きました[/title]`;
  // ... メッセージ組み立て ...
  message += '[/info]';

  UrlFetchApp.fetch(
    `https://api.chatwork.com/v2/rooms/${roomId}/messages`,
    { method:'post', headers:{'X-ChatWorkToken':CW_API_TOKEN}, payload:{body:message} }
  );
}

次のステップ

通知の仕組みができたら、データ転記・整形の自動化に進みましょう。フォーム回答を別シートに整形して転記する処理が作れます。

Free Newsletter

AIを業務に活かしたいなら
SMR-Labメルマガ

毎週火曜10時、コピペで使えるChatGPTプロンプト・
GASテンプレートをお届け。登録は1分・完全無料。

▶ 無料で登録する

📧 無料メルマガ登録

DX・AI活用のヒントを週1回お届け。登録特典:すぐ使えるプロンプト集&GASテンプレート。

登録情報は第三者に提供しません。いつでも配信停止できます。

目次