GAS(GoogleAppsScript)を使用してチャットワークで指定した日に指定した単独のユーザーにメッセージを送ることができないか試してみました。
うまくいったので自分への覚書も兼ねて記事にしておきます。
手順としては
- チャットワークのAPIトークンを取得する
- メッセージを送りたいチャットワークのユーザーのroom_idを取得する
- GASでライブラリ「ChatWorkClient for Google Apps Script」を追加する
- GASでチャットワークを動かすためのコードを記述する(自動で送信したいメッセージを作成する)
- GAS実行時のアクセス許可をする(初回実行時のみ)。
- GASのトリガー機能を設定する(毎日、毎週、毎月等の繰り返すスパンを設定する。)
- GASのプログラムを実行する
です。
初めてGASを使用したので、コード?の意味や関数?等、しっかりと理解できていないことはたくさんありますが上手くいったので誰かの参考になれば幸いです。
この記事はこんな人を対象にしています。
・チャットワークを使用して顧問先、取引先等とやりとりをしている人
・1日、10日、20日等、月末以外の毎月決まった日にチャットワークを使って定型文で連絡をしている人
・GASのこととかプログラムとかよくわからないけど、一連の作業を自動化したい人。
※本記事のやり方だとチャットワークでのメッセージは単独のユーザーにしか送ることはできません。
なお、【月末】にチャットワークを使って定型文で連絡をしたい方は下記の記事を参考にしてください。
GASを使用してチャットワークで毎月決まった日に顧問先に月次資料を請求するメッセージを自動で送信する
今回作成したGASを実行すると毎月1日にチャットワーク上で指定したユーザーに対して下記のような文章を送付します。
会計事務所等で仕事をしていると各顧問先に対して大体、各月の前半(毎月1日~10日前後)に前月分の資料を請求する機会が多いかと思います。(請求する月次資料も毎月同じものが多い。)
なので今回はプログラムを作成するにあたって「〇〇月になったので、(〇〇月の)前月分の資料を送ってください」のように、メッセージを送信する月の前月分を関数を使用して判断させ、それをメッセージに反映させて自動で送信するようにしてみました。
上の画像でいうところの「2020年8月になったので」の部分と「2020年7月分の~」の部分がそれぞれ関数を使用して判断させている箇所になります。
チャットワークで「APIトークン」と「ルームID」を取得する。
GASを使用してチャットワークでメッセージを自動で送信するにはまず、チャットワークで「APIトークン」とメッセージを送信する相手ユーザーの「ルームID」が必要になるのでそれぞれ取得しておきます。
「APIトークン」の取得の仕方は下記のチャットワークのヘルプページを参考にしてください。
https://help.chatwork.com/hc/ja/articles/115000172402-API
無事にAPIトークンが発行できたらメモ帳とかチャットワークの「マイチャット」のメッセージ欄とかに貼り付けておきましょう。
次に、「ルームID」の取得方法ですが、チャットワークのデスクトップアプリの場合にはメッセージを送信したいユーザを選択したうえで、下記の箇所をクリックすると「ルームID」を確認できます。
最初は「マイチャット」を選択してうえで下記の箇所をクリックしてみるとよいと思います。
画像で示した箇所をクリックすると「URL」が表示されます。「URL」欄に記載された「https://www.chatwork.com/#!rid」の後に続く数桁の数字が「ルームID」になります。
次に「マイチャット」ではなく、チャットワーク上でメッセージを送信したい別のユーザーを選択したうえで同じように画像で示した箇所をクリックすると同様に「URL」が表示されますが、「URL」欄に記載された「https://www.chatwork.com/#!rid」の後に続く数桁の数字がさきほどの「マイチャット」の数字とは変わっているはずです。
こちらも数字部分だけコピーしてメモ帳とかチャットワークの「マイチャット」のメッセージ欄とかに貼り付けておきましょう。
以上で「APIトークン」と「ルームID」の取得は完了です。
GASでライブラリ「ChatWorkClient for Google Apps Script」を追加する
GoogleにログインしてGoogleドライブから「新規」 → 「その他」 → 「Google Apps Script」へ進み
下記のGASのコードを記載するところを表示します。
「リソース」から「ライブラリ」を選択します。
その後出てくる画面の「add a library」に
「M6TcEyniCs1xb3sdXFF_FhI-MNonZQ_sT」
を入力して「追加」をクリックします。
そうすると下記の画面になるので、
「バージョン」を(2020年8月現在)最新の18に設定して「保存」をクリックするとOKです。
GASでチャットワークを動かすためのコードを記述する。
GASのコードを記述するところに下記のコード記載します。
【追記情報 2021/1/1】
※以前まで記載していたコードでは不具合が発生するため、コードの一部を変更しました。
変更箇所は15行目~22行目までです。
【変更前のコード】
var onemonthbefore = date.getMonth()+”月分”; // 「前月」を取得 ※getMonthの返り値が0~11(1月~12月)
function chatworksendmsg() {
//■実行内容の説明。 先月の月次資料を請求するメッセージをチャットワークでを自動で送信するGAS
//20行目の【api_token】に自分のチャットワークのAPIトークンを入力
//21行目の【var room_id】に送信したい相手のチャットワークのルームIDを入力すると記述している文章が送信される。
//GASのトリガー機能を使用すると指定した日付に繰り返しメッセージを送付することができる。
//■変数の宣言
var date = new Date(); //現在日時のDateオブジェクトを作る
var today = Utilities.formatDate(date, 'Asia/Tokyo', 'yyyy年M月');
//現在の「月」を取得
var month = date.getMonth(); //※getMonthの返り値が0~11(1月~12月)なので、もし結果を【文字】として使用する場合は+1する必要がある
//Dateオブジェクトに1ヶ月前の月を設定したいので、「月」に-1をセットする
date.setMonth(month-1);
//日付の表示形式を整形する
var onemonthbefore = Utilities.formatDate(date, 'Asia/Tokyo', 'M月分');
//■チャットワークを操作するために必要な部分
var api_token = "ここにAPIトークンを張り付ける"; // チャットワークAPIのAPIトークンを入力する
var room_id = 123456789; // 送信先のチャットのidを入力する
var cw = ChatWorkClient.factory({token: api_token});
//■変数の宣言とチャットワークで送信する文章の作成部分
var msgtext = today + "になりましたので下記の資料をいただけますでしょうか?\n\n";
msgtext +=onemonthbefore+" 〇〇銀行のインターネットバンキングデータ\n\n";
msgtext +=onemonthbefore+" Excelの現金出納帳データ\n\n";
msgtext +=onemonthbefore+" 現金領収書\n\n";
msgtext +="\n\n";
msgtext +="以上になります、よろしくお願いいたします。";
//■処理実行部分
cw.sendMessage({room_id: room_id, body: msgtext});
}
コードを張り付けたら、次に自分のAPIトークンとメッセージを送付したいユーザーのルームIDを上記のコードに記載します。この作業をしないとメッセージを送ることができません。
張り付けたコードの「//■チャットワークを操作するために必要な部分」の箇所にさきほど取得しておいたAPIトークンとルームIDを記載します。
具体的にはAPIトークンが仮に「kithujiw7893」で、メッセージを送信したいユーザーのルームIDが仮に「234789」であった場合はAPIトークン下記の黄色でマークしている箇所に、ルームIDは下記の緑色でマークしている箇所に記載します。
変更するとこうなります。
次に自動で送信したいメッセージになるようにコードに記載した文章の内容を変更しましょう。
例えば「〇〇銀行のインターネットバンキングデータ」の箇所を「A銀行の通帳コピー」に変更する場合には。
上の画像の黄色のマーク部分を
のように変更すればOKです。
他の箇所についても同じやり方で自分が自動で送信したい文章に変更しておきましょう。
文章の変更が終わったらコードを保存しておきます。保存ボタンは下記の箇所です。
保存ボタンをおしてエラーがでなければOKです。エラーがでた場合にはコードの記載がおかしい等、なんらかの原因があるはずなのでその原因を解決する必要があります。
GAS実行時のアクセス許可をする(初回実行時のみ)
ここまで作成してきて、保存したGASを実行しようとすると、初回のみ「承認が必要~」といったメッセージが画面に表示されプログラムが実行できないという現象が発生します。
解決方法はネットにたくさんあがってますのでGoogle先生に「GAS 許可 承認 初回」と聞いてみて解決方法を調べてください。
承認の作業をしたうえで再度GASのプログラムを実行してみてチャットワークで自動でメッセージが送信されていればプログラム自体は完成です。
最後にトリガー機能を使用してメッセージを自動で送信する期間を設定していきます。
トリガー機能を設定して繰り返す期間を設定する。
毎月決まった日にチャットワークでメッセージを送りたい場合にはGASのトリガー機能を使うと簡単に設定することができます。
トリガー機能の設定方法はネットで調べればすぐにでてきますが一応やりかたを載せておくと
GASのコードを記述する画面の上のほう、「編集」から「現在のプロジェクトのトリガー」へ進んで、
右下の「+ トリガーを追加」からトリガーの追加を行います。
画像の黄色のマーク箇所を設定することで、毎月1日の午前9時~10時に自動でプログラムが実行され、チャットワークで自動でメッセージが送信されるようになります。
なので,
自動でメッセージを送信する日付や時間帯を変更したい場合には上の画像のマーク箇所を好みの日付等に変更すればよいと思います。
設定が終わったら「保存」をクリックして終了です。
これで設定した日になると自動でチャットワークでメッセージが送信されます。
試しにメッセージの送信先を「マイチャット」に設定し、「月ベースのタイマー」を「分ベースのタイマー」に変更してテストしてみるといいと思います。
指定した時間に「マイチャット」にメッセージが届けば自動化は成功です。送信先を「マイチャット」から実際にメッセージを送りたいユーザーの「room_id」に変更しておきましょう。
注意点
トリガー機能を設定している限り、指定した日時になったらプログラムが繰り返されるので、取引がなくなった、顧問契約が解除になったなどの理由で定期的にメッセージを送る必要がなくなった場合にはこのトリガー機能を「解除」するのを忘れないようにしてください。
まとめ
今回の記事のきっかけは先日、お世話になっている税理士さんとの雑談のなかで
「Uipathでチャットワークで自動でメッセージって送れますか?」
と質問されたのがきっかけです。
その税理士さんはチャットワークを使って顧問先の方と連絡することが多いようで、毎月の資料請求を忘れないようにチャットワークで自動化ができれば便利だとのこと。
自分自身はチャットワークで顧問先とやり取りをすることはあまりないため、このような発想がなかったのですが、いい機会なのでUipathでチャットワークに自動でメッセージを送信できるのかどうかGoogle先生で調べてみたんです。
すると、Uipathでもできるけど、GASを使ってやるほうが簡単そう(実際にやってる人の記事がたくさんでてきた。)だということがわかったので方向転換してGASでやることに。
GASを初めて使ってみましたが、今回の記事程度の作業であれば、わからないことは大概ネットで調べればなんとかなりますね。わかりやすく、応用が利く記事を書いてくれているネットの人に感謝です。
こちらの関連記事もよろしければどうぞ↓
【本日の近況報告】
梅雨もあけて、今年も暑い夏が来ました。
夏といったら毎年税理士試験の時期なんですが、受験生時代に税理士試験が終わった後のお盆休みにはかなりの高確率でドラマ「ビーチボーイズ」をYouTubeで観ていました。
個人的には青春ドラマのトップ3にランクインする名作です。
3話目か4話目くらいに出てくる平泉成さんの釣りのシーンが個人的には一番好きなとこですね。
カッコいいんですよ平泉さんが。
2020年8月17日から何とBSフジで再放送されるらしいので全部録画予約をかましました。
キレイな映像でまた見れるのが今から楽しみです。
フジテレビさんありがとうございます。
観たことが無い人、当時見てた人もこの夏、ビーチボーイズはいかがでしょうか?
【本日の1曲】
The Mighty Mighty Bosstones / The Impression That I Get
アメリカのボストンのスカとかパンクのバンド。1997年くらいにリリースされた曲で、このバンドといったらこの曲ではないでしょうか?(当社調べ)
上で書いたドラマ「ビーチボーイズ」の5話目で竹野内さん演じる鈴木海都が屋台で焼きそばやいてるときに流れてるんですね、実は。