※2021年1月時点の情報です。今後の仕様変更により利用できなくなる場合もございます。
こんにちは、Chatworkのさかぐち(cw-sakaguchi)です。
「Google Apps Script」を利用して「業務効率化」する手順を不定期に更新しております。
Chatworkを利用する中でメッセージを「予約投稿」したいと思ったことはありませんか?
今回は「指定した日にChatworkへメッセージを投稿する仕組み」を作成しようと思います。
目次
Google Apps Scriptとは
Googleが提供しているJavaScriptベースのスクリプト言語です。
インストール作業等は不要でGoogle のサーバーで実行されます。 実行するために必要なものは以下の通りです。
- Googleアカウント
- ネットワーク環境
- ブラウザ
この記事でできること
事前にスプレットシートに記載した日付にメッセージを送ります。
<スプレットシートで指定するもの>
- 投稿日
- 投稿内容
- メッセージを投稿するグループチャットのルームID
手順
「指定した日にChatworkへメッセージを投稿する」手順を紹介していきます。
Chatwork API Tokenの発行
Chatwork APIを利用してメッセージを送信するため、Chatwork API Tokenを取得します。
以下の手順に沿って発行してください。
取得できた「API Token」はメモ帳などに保存してください(後ほど使います)
スプレットシートの作成
1.Googleドライブを開き「新規」をクリック
2.「Googleスプレットシート」をクリック
3.スプレットシートを設定
以下の項目を準備してください。
- No
- ルームID
- 投稿内容
- 投稿日
- 実行日時
実行日時の表示形式を「日時」にしてください。
※シート名は「シート1」のままで問題ありません。
今回利用するスクリプトの中で、シート名を指定する部分があります。
シート名を変更した場合、スクリプトを変更してください。
予約投稿したい内容を記載
予約投稿したい内容を記載してください。
項目 | 内容 |
---|---|
No | 管理しやすいように連番をつけてください。 |
ルームID | 投稿したいグループチャットの「ルームID」を入力してください。確認方法はこちら。 |
投稿内容 | 投稿したい内容を入力してください。絵文字やTO指定もできます。 |
投稿日 | 投稿日を「YYYY/MM/DD」の形式で入力してください。 |
実行日時 | スクリプト内で自動で記録するため、空白のままで構いません。 |
Google Apps Scriptの作成
1.スプレットシートの「ツール」メニューから「スクリプト エディタ」をクリック
2.左上の「無題のプロジェクト」をクリックし、プロジェクトの名前を設定
3.最初から記載のある以下のコードは利用しないため削除
function myFunction() { }
4.以下のコードをコピペし、【編集対象】と書かれている部分を修正
// 【編集対象】Chatwork API Token const token = 'ここにChatwork APIトークン'; function myFunction() { // スプレットシート読み込み const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheet = ss.getSheetByName('シート1'); const lastRow = sheet.getLastRow() // ChatworkAPIクライント作成 const client = ChatWorkClient.factory({token: token}); // 実行日時 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)){ client.sendMessage({ room_id: room_id, body: message }); // 実行日時の記録 sheet.getRange(i, 5).setValue(new Date()); } } } // 日付を比較する(同じ場合、trueを返す) function diffDate(date1, date2){ if(date1.getFullYear() == date2.getFullYear()){ if(date1.getMonth() == date2.getMonth()){ if(date1.getDate() == date2.getDate()){ return true; } } } return false; }
※シート名を「シート1」から変更した場合、以下を変更してください。
var sheet = ss.getSheetByName('シート1');
5.「プロジェクトを保存」をクリック
ライブラリの読み込み
Chatworkへメッセージ送信はライブラリ「Chatwork Client for Google Apps Script」を利用します。
1.ライブラリの「+」をクリック
2.「スクリプトID」欄に以下のIDを入力後「検索」をクリックし、必要な設定をおこない「追加」をクリック
スクリプトID:
1nf253qsOnZ-RcdcFu1Y2v4pGwTuuDxN5EbuvKEZprBWg764tjwA5fLav
項目 | 内容 |
---|---|
バージョン | 最新バージョン(一番大きな数字) |
ID | 変更なし(ChatWorkClient) |
3.「ChatWorkClient」が追加されたら完了
トリガーの設定
毎日決まった時間にスクリプトを動かしChatworkへ通知するようトリガーを設定します。
1.左側のアイコンから、時計のアイコンをクリック
2.「トリガーを追加」をクリック
3.必要な設定をおこない、「保存」をクリック
項目 | 内容 |
---|---|
イベントのソースを選択 | 時間主導型 |
時間ベースのトリガーのタイプを選択 | 日付ベースのタイマー |
時刻を選択 | 通知したい時間を選択※指定した時間の間に実行されます。 |
※保存後にポップアップブロックが表示された場合は「許可」してください。
4.新しい画面が立ち上がるので、自分のアカウントをクリック
5.「許可」をクリックし、画面が自動で閉じるのを待つ
6.1行追加されたら完了
動作確認
トリガーとスプレットシートの設定をします。
時間まで待ってると、予約内容が飛んできました!
スプレットシートの実行日時も自動で記録されました。
まとめ
いかがでしたでしょうか?
投稿する時間のバリエーションを増やしたい場合、今回作成したものと同じものを作成し、トリガーの時間を変更してみてください。
それでは、よいGAS生活を〜
※プログラムの書き方など、具体的な実装方法については「サポート対象外」となります。