Chatworkで「メッセージの送信日と内容が決まっている」という方に、「Chatworkの予約投稿」がおすすめです。
この記事では「Chatworkの予約投稿の方法」について解説します。
私自身、Chatworkでの連絡先が増えてきたので、自分が半自動化するシステムを導入したくて調べて実践しました。
ですが先日、有料プラン限定ですが、日時指定予約投稿ができるようになりました。
ただし、
- 無料プランを利用している場合
- 同じメッセージを定期的に繰り返す場合(リマインド)
- メッセージのデータがGoogleスプレッドシートにある場合
この3つの場合に当てはまるなら、次の記事の手順を参考にどうぞ。
私はこんな状況でした。
- 前回と同じようなメッセージを送信するとき、前回のメッセージを探してコピペするのが面倒
- メッセージの送信予定日と内容をChatworkで「自分にタスク」をつけても、忘れることがある
同じようなお悩みがある方にも、「Chatworkの予約投稿」が断然おすすめです。
APIとか聞きなれない言葉が出てくるかもしれないですが、マネすればできるはずです。
時間を確保して、やっていきましょう。
(作業想定時間:40分)
手順は次の通りです。
これさえやれば、あとは「新規の予約投稿の入力」だけでOKです。
Step.1 ChatworkでAPIトークンを発行する
Chatworkで「APIトークン」を発行して、コピーする。
※自分のChatworkのシステムを動かす「鍵」なので、外部漏出しないようにしましょう。
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予約投稿システムの活用方法」
私は、イベント当日の朝と夕方と両方で予約投稿したかったので、朝用と夕用のスプレッドシートを作りました。
コードを新しく書くのが面倒だったので、作成したスプレッドシートをコピーして、「トリガーの時間だけ」変更しました。
竹本ひろこ|コンテンツ組み立て人
メルマガでは、ブログにもSNSにも書かない、講座づくりやビジネスについて発信しています。ぜひご登録ください。