見出し画像

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

今日やった記事

変更ポイント

リストはA列~C列までの3列で構成されているので、その3列のセルが全てに値が入っているときのみカウント対象とします

https://tonari-it.com/gas-list-count-chatwork/
  • 今回は、書評が何件入っているかをカウントすることを目的にします。

  • 今回も、配列を使って行います。

  • 他の物に転用できるように、列数は変更できるようにします。

新たに学んだこと

配列にすると列数を設定しなくて良い

”ss.getDataRange().getValues()”を使うことで、列数に関係なく値を取得できます。大変便利!

for(配列 of 配列)は便利

 これまで、要素分回したいときは”for(i=0;i<=配列.length-1;i++)”を使っていました。
しかし、マイナス1を入れるのかどうかを考えてしまうんですよね。
やはり、”for(配列 of 配列)”は小難しいことを考える必要がなく便利です。

気付き

  • 2次配列でincludesメソッドを使う場合、”for(仮配列 of 配列)”の方が相性が良い。なぜならば、仮配列が自動的に1次配列になるからです。

作成したプログラム

function countBook() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const datas = ss.getDataRange().getValues();
  datas.shift();  //見出しを削除

  var count = 0;  //カウントするための変数

  for (const data of datas) {  //配列回数回す
    if (data.includes("") == false) {  
      count++;  //カウント変数を1増やす
    }
  }

  const text = `書評の登録件数は、${count}件です。`

  const url = `着信 WebhookのURL`;

  const message = { 'text': text };
  const options = {
    'method': 'POST',
    'headers': {
      'Content-Type': 'application;caerset=UTF-8'
    },
    'payload': JSON.stringify(message)
  };

  UrlFetchApp.fetch(url, options)
}