
Photo by
toriumiyusa
「スプレッドシートのリストアップ件数をGASでチャットワークに通知する」をやるの巻
今日やった記事
変更ポイント
リストはA列~C列までの3列で構成されているので、その3列のセルが全てに値が入っているときのみカウント対象とします
今回は、書評が何件入っているかをカウントすることを目的にします。
今回も、配列を使って行います。
他の物に転用できるように、列数は変更できるようにします。
新たに学んだこと
配列にすると列数を設定しなくて良い
”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)
}