【GAS修行⑩】毎朝、Googleカレンダーの一日の予定を、ChatWorkで自動通知。
・GAS熟練者への道。
・先人達のコードの「写経&コピー」の駆使の成果物のまとめ。
・第十弾
・第一弾・第二弾・第三弾・第四弾・第五弾・第六弾・第七弾・第八弾・第九弾はこちら。
経緯
・「十回目。」
・「正真正銘の複製・過去作たらい回しという、二大荒行記事も、早くもこの回数まできてしまう。」
・「不必要なものは作らないという、合理主義の私として、ここらへんで一区切りにしよう。」
・「本当は作れる技術がないのではという、解答既出の自問自答に心を震わせながら、書いていこう。」
→そういうわけで、今回もサンプルアプリと仏サイトを発見。
→https://tonari-it.com/gas-calendar/
→「参考(マルコピ)に作ってみるか」
→取り組み開始。
概要
- 毎朝、本日のGoogleカレンダーの予定をChatWorkに通知してくれる。
→LINE,Slack,ChatWorkの3つの連携でも、予定見逃しがあれば、私は一度旅に出てみようと思う。
結果
作成環境
- Google App Script
- ChatWork API
手順
※Google Apps Script・Chatork APIの設定は第八弾と一緒
Google Apps Scriptの設定
- Googleドライブからスクリプトエディタを起動。
※Googleアカウントを持っていない人は、作成する。- Googleドライブを起動
- 「新規」→ 「その他」→「アプリを追加」の順にクリック。
- アプリ検索欄に「script」と入力して検索。
- 検索結果に「Google Apps Script」が表示されるので、そこの「接続」ボタンをクリック
- 改めて「新規」→ 「その他」の順にクリックしていくと、「Google Apps Script」が表示されているので、クリック。
- 起動したプロジェクトに名前をつける
※プロジェクト名が反映されるわけではないが、自分がわかる名前をつける。
→保存されたら一旦置いておく。
ChatWork APIの設定
※ChatWork未登録の人は、一人用を開設しよう。(何かと便利。)
- ChatWork APIのトークンを発行。
Googleカレンダーの設定
- GoogleカレンダーIDを取得。
-
Googleカレンダーにアクセス。
※使用していない人は、動作確認のため、今日のスケジュールだけでも入れましょう。 - Googleカレンダーページ内の左側のマイカレンダーメニューの「点3つ」から「設定と共有」をクリック
- カレンダー設定ページに遷移後、ページ下部にある「カレンダーの統合」欄の「カレンダーID」をメモしておく。
※大体初期状態は、カレンダーIDは自分のメールアドレスとなっている。
-
Googleカレンダーにアクセス。
ライブラリ設定
- スクリプトエディタに戻り、上部メニューの「リソース」から「ライブラリ」をクリック。
- 「ライブラリを追加」欄に下記を追加する。
-
M6TcEyniCs1xb3sdXFF_FhI-MNonZQ_sT
・・・・「ChatWorkClient」というChatWork純正ライブラリ。
-
- 追加後、「バージョン」を最新にして、「デベロッパーモード」をONにして、保存する。
コード
- スクリプトエディタ内のコードに、下記を記述する。
/* 指定のカレンダーの本日の予定をチャットワークに送る */
function todayReport() {
/* カレンダーID取得 */
var myCalendarId=CalendarApp.getCalendarById('カレンダーIDを書く。');
var now = new Date();
/* カレンダーの本日のイベントを取得 */
var todayEvents=myCalendarId.getEventsForDay(now);
/* 送信メッセージ */
var eventMessage = "[info][title]" + Utilities.formatDate(now, 'JST', 'yyyy/MM/dd') + "の予定[/title]"
/* 予定無しメッセージ*/
var noMsg = ""
/* イベントの数だけ繰り返し */
if(todayEvents.length === 0){
noMsg = Utilities.formatDate(now,"JST","yyyy/MM/dd") + "は、、、\nなんと予定はありません。\nうきうき(*'ω'*)";
eventMessage = eventMessage + noMsg + '[/info]';
}
else{
for(var i=0;i<todayEvents.length;i++){
// タイトル
var eventTitle=todayEvents[i].getTitle();
// 開始時刻
var eventStart=timeChange(todayEvents[i].getStartTime());
// 終了時刻
var eventEnd=timeChange(todayEvents[i].getEndTime());
// 送信内容
eventMessage=eventMessage + eventStart + ' ~ ' + eventEnd + " " + eventTitle + '\n';
}
eventMessage = eventMessage + '[/info]';
}
// メッセージ送信(チャットワークAPI書く。)
var cwClient = ChatWorkClient.factory({token: 'ChatWork API トークンを書く。'});
cwClient.sendMessage({
//ルームID
room_id:123456,
body: eventMessage
});
}
/* 時刻表記変更 */
function timeChange(targetTime){
return Utilities.formatDate(targetTime, 'JST', 'HH:mm');
}
※以下の項目を自分のものに変えるのを忘れない。
・自分のカレンダーID(先程メモしたもの。)
・ChatWork APIのアクセストークン(先程メモしたもの。)
・通知ルームID(通知したいチャンネルURLのrid123456の数字部分)
- 自分のコードに書き換えて保存後、「todayReport」関数を実行して、通知確認。
- スクリプトエディタ内の上部メニューの「関数名」の部分を「todayReport」に変更して、二つ左の「▶」ボタンで実行。
-
通知確認後、指定の時間にコードを実行してもらうために、トリガーを設定。
完了。
まとめ
・「これで、予定忘却という戦慄の愚行を行うことはないだろう」と、屈託のない表情で満足げにくつろぐ。
・ひとまずこれで一区切りということで、あとは他シリーズの「Orangeごっこ」や新記事にも挑んでみるか。
・これを見てくださるエンジニアの皆様、「まだまだGASで書けるプログラムあるのに」「今のままじゃ、人生半分損してるぞ」という意見等あれば、是非教えていただけると幸いです。
参考
-
https://tonari-it.com/gas-calendar/
→こちらを主に参考(マルコピ)にしました。大変お世話になりました。
Author And Source
この問題について(【GAS修行⑩】毎朝、Googleカレンダーの一日の予定を、ChatWorkで自動通知。), 我々は、より多くの情報をここで見つけました https://qiita.com/t_o_d/items/2eb25d83dbece7c738e3著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .