みなさん、こんにちは!
チャットワークにひたすら色々なものを送りまくっていますタカハシ(@ntakahashi0505)です。
引き続き、Google Apps Scriptでチャットワークに色々と便利な通知を送るシリーズとなります。
前回はこちらの記事で、指定したスプレッドシートの範囲の全て埋まったらチャットワークへ入力完了通知を送るというスクリプトについて紹介しました。
今回もスプレッドシートの入力状況に応じてのチャットワークへの通知になります。
チームで何らかのリストを作成するという共同作業をしているときに、前日までの作業で何件まで終わったかを知りたくはないですか?
これも前回までのスクリプトをちょっと改造すればすぐに作成することができます。
では、スプレッドシートで作成したリストの件数をGoogle Apps Scriptを使ってチャットワークに通知する方法、早速ご紹介していきましょう!
使用するリストとスクリプトの方向性
さて、ではまずこのスクリプトの方向性について固めておきましょう。
まず使うスプレッドシートはこちらです。
以下の記事で作成した名言bot用のリストですね。
毎朝8時~9時をトリガーとして、リストの件数をカウントした結果をチャットワークに通知します。
リストはA列~C列までの3列で構成されているので、その3列のセルが全てに値が入っているときのみカウント対象とします。
スプレッドシートのリスト件数をチャットワークへ通知するスクリプト
Google Apps Scriptでスプレッドシートのリスト件数をチャットワークへ通知するスクリプトはこちらです。
function countList(){ var mySheet=SpreadsheetApp.getActiveSheet(); //シートを取得 /* リスト件数をカウント */ var i=2; var count=0; while(mySheet.getRange(i,1).getValue()!=""){ //A列がNULLでない間繰り返し if(mySheet.getRange(i,2).getValue()!="" && mySheet.getRange(i,3).getValue()!=""){ //B列,C列がともにNULLでなければ count++; //件数をカウントアップ } i++; } /* チャットワークに送る文字列を生成 */ var strBody = "[info][title]Chatwork名言Bot[/title]現在の名言数は" + count + "件です(clap)" /* チャットワークにメッセージを送る */ var cwClient = ChatWorkClient.factory({token: ' ------------------------'}); //チャットワークAPI cwClient.sendMessage({ room_id: XXXXXXXX, //ルームID body: strBody }); }
けっこうシンプルです。ほとんど、今までのシリーズで使った内容で組めますね。
新しい要素については、以下解説をしていきますね。
while文の繰り返し
まず8行目から始まるwhile文によるループがあります。
Google Apps ScriptではJavaScriptの記述がベースになっていますが、このwhile文による繰り返しは以前紹介したfor文による繰り返しと並んで非常にポピュラーなものです。
// 処理
}
このように書き、条件式が成り立っている間は波括弧内の処理を行います。
今回の例では
while(mySheet.getRange(i,1).getValue()!=""){ //A列がNULLでない間繰り返し //処理 i++; }
としています。条件式としては、「i行目の1列目が空欄でない」という条件式になります。「!=」は等しくないという意味の演算子です。
ループ内の処理の最後でiをインクリメント(1だけ増やす)をしていますので、繰り返しのたびに、1行ずつ移動して条件式を判断することになります。
なお、このi++;を忘れるとループから抜けられなくなります。
while文を使うときはちゃんとループを抜けるときが来るように注意して組んでくださいね。
ifで複数の条件式
9行目ですが、ifの条件として複数の式を使っています。
//処理
}
このようにすることで、条件式1と条件式2が両方成立した場合にのみ波括弧内の処理を行うになります。AND条件です。
今回の場合
if(mySheet.getRange(i,2).getValue()!="" && mySheet.getRange(i,3).getValue()!=""){ //B列,C列がともにNULLでなければ count++; //件数をカウントアップ }
ですから、i行目の2列目と3列目がともに空欄でなければcount変数を+1するという内容です。
ちなみに、1列目の判定をしていないのはwhile文ですでに判定をしているからです。
なお、条件式1と条件式2のどちらか一方が成立したら処理を行う、つまりOR条件の場合は
// 処理
}
を使いますので、合わせて覚えて下さいね。
チャットワークのエモーティコン
スクリプトの16行目、チャットワークに送る文字列を生成する箇所ですが「(clap)」という文字列があります。
これはチャットワークで使えるエモーティコンの一種を表していまして、チャットワークに送った時点でちゃんと拍手のエモーティコンに変換されます。
- :):笑顔
- (clap):拍手
- (bow):おじぎ
- (flex):筋肉モリモリ
- (devil):悪魔
など色々な種類がありまして、チャットワークを楽しい雰囲気に彩ってくれます。
それぞれのエモーティコンがどの文字列で表現できるかは、チャットワークのエモーティコンアイコンをクリックして、それぞれのエモーティコンにカーソルを合わせるとわかります。
チャットワークへの通知結果
実行結果はこちらです。
拍手のエモーティコンがつくだけでグッと愛着が湧きますね。まだ30件しかないので、申す少しリストアップしようかな…。
あとはイベントトリガーで発火時間をam8~9時に設定すれば、前日までのリストアップ件数を毎朝自動で通知されます。
まとめ
以上、Google Apps Scriptでスプレッドシートのリストアップ件数をチャットワークに通知する方法についてお伝えしました。
- 顧客のアタックリストの作成件数
- Googleフォームなどによる申込件数
- Twitterエゴサーチでのヒット件数
など、意外と汎用性が高いシステムだと思います。ぜひ、ご活用下さいね。
次回はGoogleアナリティクスの前日のレポートをチャットワークに送りたいと思います。
どうぞお楽しみに!
連載目次:初めてのGoogle Apps Scriptで自動でチャットワークに色々と送る
最初のお題にも限らずチャットワークを中心に操作していきます。スプレッドシートやカレンダーをはじめとするGoogleサービスはもちろん、Twitterなどの外部のサービスともAPIで連携させて色々なものをチャットワークに通知してみますよ。- Google Apps Scriptの第一歩、初心者でもチャットワークにメッセージを送れる
- Google Apps Scriptでチャットワークの名言botを作る方法
- Google Apps ScriptでTwitterの検索結果を自動でチャットワークに通知
- 【幹事必見!】スプレッドシートの入力が完了したらチャットワークに自動で通知する方法
- スプレッドシートのリストアップ件数をGASでチャットワークに通知する
- GASでチャットワークにGoogleアナリティクスの前日レポートを自動送信
- GASでGoogleアナリティクスの記事ランキングをチャットワークに送る
- Google Apps ScriptでWordPressの更新情報をチャットワークに送る
- 毎朝、当日の予定をGoogleカレンダーから取得してチャットワークに送る
- 【Google Apps Script】天気予報をWeb APIで取得する方法
- 【GAS】JSON形式のデータを取り出してチャットワークに天気予報を送る