🤹

【GAS】指定日にChatworkへメッセージを投稿する

2024/07/19に公開

Google Apps Script(GAS)は、Googleのサービスを自動化するための強力なツールです。今回は、GASを使ってGoogleスプレッドシートに指定された日付にChatworkへ自動的にメッセージを投稿する方法をご紹介します。これにより、リマインダーや通知を手動で送る手間を省くことができます。

必要な準備

  1. Chatwork APIトークンの取得
  2. スプレッドシートの準備
  3. スクリプトの作成

ステップ1:Chatwork APIトークンの取得

まず、Chatwork APIを使用するためにAPIトークンを取得する必要があります。以下の手順で取得できます。

  1. Chatworkにログインし、API設定ページにアクセスします。
  2. 「APIトークンを発行する」ボタンをクリックし、表示されたトークンをコピーします。

ステップ2:スプレッドシートの準備

スプレッドシートに以下のような形式でデータを入力します。

  • 日付:メッセージを送信する日時
  • ルームID:メッセージを送信するChatworkのルームID
  • メッセージ:送信するメッセージ
  • 完了:処理が完了したら自動でチェックが付く

ステップ3:スクリプトの作成

スクリプトエディタを開き以下のコードを貼り付けます。

// Chatwork API トークンを設定
const API_TOKEN = 'ご自身のChatwork API トークンを指定する';

// スケジュールされたメッセージを送信する関数
function postScheduledMessage() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sh = ss.getSheetByName("シート1");
  const values = sh.getDataRange().getValues();
  values.shift();
  //現在日時
  const now = new Date();
  for (const [index, value] of values.entries()) {
    const [date, roomId, message, flag] = value;
    // 既にD列(完了)にチェックが付いてる場合はスキップする
    if (flag) continue;
    // dateが現在日時以降の場合はスキップする
    if (date > now) continue;
    //Chatworkにメッセージを投稿する
    postMessageToChatwork_(roomId, message);
    //D列(完了)にチェックを付ける
    sh.getRange(index + 2, 4).setValue(true);
  }
}

// メッセージを投稿する関数
function postMessageToChatwork_(roomId, message) {
  const url = 'https://api.chatwork.com/v2/rooms/' + roomId + '/messages';
  const options = {
    'method': 'post',
    'headers': { 'X-ChatWorkToken': API_TOKEN },
    'payload': { 'body': message, self_unread: "1" }
  };
  console.log("Chatwork投稿...");
  const result = UrlFetchApp.fetch(url, options);
  console.log(result.getContentText());
}

//トリガーを設定する関数
function setTrigger() {
  console.log(`トリガー設定...`);
  const functionName = "postScheduledMessage";
  const hour = 9;
  //毎日9~10時にトリガーを実行する
  ScriptApp.newTrigger(functionName).timeBased().everyDays(1).atHour(hour).create();
}

スクリプトの説明

  1. APIトークンの設定

    • API_TOKENには先ほど取得したAPIトークンを入れます。
  2. メッセージを投稿する関数

    • postMessageToChatwork関数は、指定したルームにメッセージを投稿します。
  3. トリガーを設定する関数

    • setTrigger関数は、毎日9~10時に実行されるトリガーを作成します。
  4. スケジュールされたメッセージを送信する関数

    • postScheduledMessage関数は、スプレッドシートのデータに基づいて指定日時にメッセージを送信します。

トリガーの設定

  1. スクリプトエディタ上部の「実行」メニューから「setTrigger」を選択し、実行します。
  2. 実行後、トリガーの設定ページにアクセスし、正しくトリガーが作成されているか確認します。

最後に

これで、スプレッドシートに指定された日付にChatworkへ自動的にメッセージを投稿する設定が完了しました。GASを活用することで、日常の業務を効率化し、時間を節約することができます。チーム全体の生産性向上に繋がります。是非、試してみてください!

Discussion