Chatworkの予約投稿「指定日にメッセージ送信」する方法

 

Chatworkで「メッセージの送信日と内容が決まっている」という方に、「Chatworkの予約投稿」がおすすめです。

この記事では「Chatworkの予約投稿の方法」について解説します。

私自身、Chatworkでの連絡先が増えてきたので、自分が半自動化するシステムを導入したくて調べて実践しました。

ですが先日、有料プラン限定ですが、日時指定予約投稿ができるようになりました。

ただし、

  • 無料プランを利用している場合
  • 同じメッセージを定期的に繰り返す場合(リマインド)
  • メッセージのデータがGoogleスプレッドシートにある場合

この3つの場合に当てはまるなら、次の記事の手順を参考にどうぞ。

 

私はこんな状況でした。

  • 前回と同じようなメッセージを送信するとき、前回のメッセージを探してコピペするのが面倒
  • メッセージの送信予定日と内容をChatworkで「自分にタスク」をつけても、忘れることがある

同じようなお悩みがある方にも、「Chatworkの予約投稿」が断然おすすめです。

APIとか聞きなれない言葉が出てくるかもしれないですが、マネすればできるはずです。

たけ
たけ

時間を確保して、やっていきましょう。

(作業想定時間:40分)

たけ
たけ

手順は次の通りです。

これさえやれば、あとは「新規の予約投稿の入力」だけでOKです。

 

Step.1 ChatworkでAPIトークンを発行する

Chatworkで「APIトークン」を発行して、コピーする。
※自分のChatworkのシステムを動かす「鍵」なので、外部漏出しないようにしましょう。

>>ChatworkでAPIトークンを発行する

Step.2 Googleスプレッドシートを作る

1)「シート1」の1行目に次の内容を入力する

  • No
  • ルームID
  • 送信内容
  • 送信予定日
  • 送信した日時

2)各「列」の「表示形式」を設定する

  • No :連番
  • 送信予定日 :日付
  • 送信した日時 :日時

Step.3 予約したい内容をスプレッドシートに入力する

  • ルームID :チャットルームのIDを入力します。
  • 送信内容 :即時送信のメッセージ同様、Toで宛先を指定できます。
  • 送信予定日 :半角数字で、月日を「x/x」と入力します。
    (クリックすると「YYYY/MM/DD」になっていることが確認できます。)

Step.4 Googleアプリの拡張機能を利用する(GASを作る)

1)スプレットシートの「ツール」メニューから「スクリプト エディタ」をクリック

2)「無題のプロジェクト」をクリックして、プロジェクトの名前を変更する

3)「コード.gs」に記載のあるコードを削除

4)次のコードをコピーして「コード.gs」にペースト

// 【編集必須】Chatwork API Token
const token = 'ここにChatwork APIトークン';

function myFunction() {
  // スプレッドシート読み込み
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName('シート1'); // シート名を確認
  const lastRow = sheet.getLastRow(); // 最終行を取得

  // 送信した日時
  const today = new Date();

  // スプレッドシートに記載がある分だけ繰り返す
  for (var i = 2; i <= lastRow; i++) {
    const room_id = sheet.getRange(i, 2).getValue(); // ルームID
    const message = sheet.getRange(i, 3).getValue(); // 送信内容
    const reservation_date = new Date(sheet.getRange(i, 4).getValue()); // 送信予定日

    // 同じ日付の場合、メッセージ送信
    if (diffDate(reservation_date, today)) {
      sendMessageToChatwork(room_id, message, token);

      // 送信した日時の記録
      sheet.getRange(i, 5).setValue(new Date());
    }
  }
}

// ChatWorkにメッセージを送信する関数
function sendMessageToChatwork(room_id, message, token) {
  const url = `https://api.chatwork.com/v2/rooms/${room_id}/messages`;
  const options = {
    'method': 'post',
    'headers': {
      'X-ChatWorkToken': token // APIトークンをヘッダーに設定
    },
    'payload': {
      'body': message // 送信するメッセージ本文
    }
  };

  try {
    const response = UrlFetchApp.fetch(url, options); // APIリクエストを送信
    Logger.log(response.getContentText()); // レスポンスの確認
  } catch (e) {
    Logger.log('Error: ' + e.message); // エラーの記録
  }
}

// 日付を比較する(同じ場合、trueを返す)
function diffDate(date1, date2) {
  return (
    date1.getFullYear() === date2.getFullYear() &&
    date1.getMonth() === date2.getMonth() &&
    date1.getDate() === date2.getDate()
  );
}

上のコードは、こちらを参照して改変しています。

5)STEP.1で発行した「APIトークン」をコードの2行目にコピペする

前後の記号「  (シングルクオテーション)」は消さないでください。

6)「ライブラリ」に「Chatwork Client」を追加する

スクリプトIDはこちらをコピぺしてください。
1nf253qsOnZ-RcdcFu1Y2v4pGwTuuDxN5EbuvKEZprBWg764tjwA5fLav

7)「トリガー」を設定する

保存ボタンクリック後、「ポップアップブロック」が表示された場合は「許可」を選択してください。

トリガーに1行追加されたらOKです。

Step.5 動作テストをして、確認する

送信予定の内容が、Chatworkの目的のルームに届くか「実行」して確認です。

お疲れ様でした!

竹本の「Chatwork予約投稿システムの活用方法」

私は、イベント当日の朝と夕方と両方で予約投稿したかったので、朝用と夕用のスプレッドシートを作りました。

コードを新しく書くのが面倒だったので、作成したスプレッドシートをコピーして、「トリガーの時間だけ」変更しました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください