スプレッドシートのリストアップ件数をGASでチャットワークに通知する

list-up

みなさん、こんにちは!
チャットワークにひたすら色々なものを送りまくっていますタカハシ(@ntakahashi0505)です。

引き続き、Google Apps Scriptでチャットワークに色々と便利な通知を送るシリーズとなります。

前回はこちらの記事で、指定したスプレッドシートの範囲の全て埋まったらチャットワークへ入力完了通知を送るというスクリプトについて紹介しました。

【幹事必見!】スプレッドシートの入力が完了したらチャットワークに自動で通知する方法
複数人でスプレッドシートを入力している際に入力完了をチャットワークに自動で通知できたら便利ですよね。今回は、Google Apps Scriptを使ってた力完了通知ツールの作り方について解説をします。

今回もスプレッドシートの入力状況に応じてのチャットワークへの通知になります。

チームで何らかのリストを作成するという共同作業をしているときに、前日までの作業で何件まで終わったかを知りたくはないですか?

これも前回までのスクリプトをちょっと改造すればすぐに作成することができます。

では、スプレッドシートで作成したリストの件数をGoogle Apps Scriptを使ってチャットワークに通知する方法、早速ご紹介していきましょう!

スポンサーリンク

使用するリストとスクリプトの方向性

さて、ではまずこのスクリプトの方向性について固めておきましょう。

まず使うスプレッドシートはこちらです。

名言botのスプレッドシートリスト

以下の記事で作成した名言bot用のリストですね。

429 Too Many Requests

毎朝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(条件式){
 // 処理
}

このように書き、条件式が成り立っている間は波括弧内の処理を行います。

今回の例では

while(mySheet.getRange(i,1).getValue()!=""){ //A列がNULLでない間繰り返し
  //処理
  i++;
}

としています。条件式としては、「i行目の1列目が空欄でない」という条件式になります。「!=」は等しくないという意味の演算子です。

ループ内の処理の最後でiをインクリメント(1だけ増やす)をしていますので、繰り返しのたびに、1行ずつ移動して条件式を判断することになります。

なお、このi++;を忘れるとループから抜けられなくなります。

while文を使うときはちゃんとループを抜けるときが来るように注意して組んでくださいね。

ifで複数の条件式

9行目ですが、ifの条件として複数の式を使っています。

if(条件式1 && 条件式2){
//処理
}

このようにすることで、条件式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条件の場合は

if(条件式1 || 条件式2){
// 処理
}

を使いますので、合わせて覚えて下さいね。

チャットワークのエモーティコン

スクリプトの16行目、チャットワークに送る文字列を生成する箇所ですが「(clap)」という文字列があります。

これはチャットワークで使えるエモーティコンの一種を表していまして、チャットワークに送った時点でちゃんと拍手のエモーティコンに変換されます。

  • :):笑顔
  • (clap):拍手
  • (bow):おじぎ
  • (flex):筋肉モリモリ
  • (devil):悪魔

など色々な種類がありまして、チャットワークを楽しい雰囲気に彩ってくれます。

それぞれのエモーティコンがどの文字列で表現できるかは、チャットワークのエモーティコンアイコンをクリックして、それぞれのエモーティコンにカーソルを合わせるとわかります。

チャットワークのエモーティコン

チャットワークへの通知結果

実行結果はこちらです。

スプレッドシートのリスト件数をチャットワークへ通知

拍手のエモーティコンがつくだけでグッと愛着が湧きますね。まだ30件しかないので、申す少しリストアップしようかな…。

あとはイベントトリガーで発火時間をam8~9時に設定すれば、前日までのリストアップ件数を毎朝自動で通知されます。

まとめ

以上、Google Apps Scriptでスプレッドシートのリストアップ件数をチャットワークに通知する方法についてお伝えしました。

  • 顧客のアタックリストの作成件数
  • Googleフォームなどによる申込件数
  • Twitterエゴサーチでのヒット件数

など、意外と汎用性が高いシステムだと思います。ぜひ、ご活用下さいね。

次回はGoogleアナリティクスの前日のレポートをチャットワークに送りたいと思います。

429 Too Many Requests

どうぞお楽しみに!

連載目次:初めてのGoogle Apps Scriptで自動でチャットワークに色々と送る

最初のお題にも限らずチャットワークを中心に操作していきます。スプレッドシートやカレンダーをはじめとするGoogleサービスはもちろん、Twitterなどの外部のサービスともAPIで連携させて色々なものをチャットワークに通知してみますよ。
  1. Google Apps Scriptの第一歩、初心者でもチャットワークにメッセージを送れる
  2. Google Apps Scriptでチャットワークの名言botを作る方法
  3. Google Apps ScriptでTwitterの検索結果を自動でチャットワークに通知
  4. 【幹事必見!】スプレッドシートの入力が完了したらチャットワークに自動で通知する方法
  5. スプレッドシートのリストアップ件数をGASでチャットワークに通知する
  6. GASでチャットワークにGoogleアナリティクスの前日レポートを自動送信
  7. GASでGoogleアナリティクスの記事ランキングをチャットワークに送る
  8. Google Apps ScriptでWordPressの更新情報をチャットワークに送る
  9. 毎朝、当日の予定をGoogleカレンダーから取得してチャットワークに送る
  10. 【Google Apps Script】天気予報をWeb APIで取得する方法
  11. 【GAS】JSON形式のデータを取り出してチャットワークに天気予報を送る
タイトルとURLをコピーしました