この記事では、GAS(Google Apps Script)で今までスプレッドシートに作ってきた「ねこあつめ」の情報を実際にChatworkに送信する流れを掲載しております。
お世話になった記事は、【初心者向けGAS】Google Apps Scriptで別の関数を呼び出すfunctionの書き方
です。
GASサンプル集に戻る
メインメニューに戻る
これからプログラミングを始める方へ
基本情報技術者へ
自己紹介
前回の復習をいたします。
GASでChatworkにメッセージを送信するコードと、実際に送信されたメッセージです。
function testMessage(){
const cw=ChatWorkClient.factory({token:'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'});
const body='テストメッセージにゃん(=^x^=)mm。。。!';
cw.sendMessageToMyChat(body);
}
今回の内容に入る前に、ねこあつめ画像で癒されます(=^x^=)
↑「サビガー(左)」と「ヘキサにゃん(右)」
今回は、今まで作ってきたねこあつめのスプレッドシートを使って、ねこちゃんの名前(A列)をChatworkに送るコードを掲載します。
今まで作ってきた、ねこあつめのコードです。
function myFunction() {
const ss = SpreadsheetApp.getActiveSheet();
let lastRow = ss.getLastRow();//最終行を取得
for (let i = 2; i <= lastRow; i++) {
//もしもD列の「済」が空白だったらA列の「なまえ」を出力してD列を「済」にする
if (!ss.getRange(i, 4).getValue()) {
console.log(ss.getRange(i, 1).getValue());
ss.getRange(i, 4).setValue('済');
//もしも最終行以上になったらセル範囲を消去する
if (i >= lastRow) {
ss.getRange(2, 4, lastRow - 1).clearContent();
}
break;
}
}
}
この9行目をご覧下さい。
console.log(ss.getRange(i, 1).getValue());
ここを変更して、Chatworkにメッセージを送れるように変更します。
今回作るプログラムの流れは、
「ねこあつめのメッセージを取得するプログラム(メイン)」から、「Chatworkに送信する関数」に「【送れ】と指示出しする」
という流れになります。
「ねこあつめ」のメッセージを「body」という変数に格納し、Chatworkに送信する関数「sendMessage」に「body」を送り込むイメージです。
メインから関数sendMessageに対して「body」を引数にして、「sendMessage(body)」として呼び出して、「これを送ってくれ」というメッセージを送り込みます。
関数のイメージはなかなか掴みいにくいので、以下のように置き換えてみました。
例えば、私がアマゾンで、DVD(上記のbodyをDVDに置き換えると、トレース(追跡)しやすくなるかもっ!)を買ったとします。
プログラム実行開始・・・私がアマゾンに「DVDをくれ!」とポチる
メイン関数が呼ばれる・・・アマゾンが注文を受ける
チャットワークに送信する関数が呼ばれる・・・アマゾンから宅配業者へとDVDが渡る
チャットワークに「ねこあつめ」が出力される・・・宅配業者から、DVDが私の手元に届く
ざっくりですが、これがプログラムをトレースして行った時の流れです。
以上を踏まえてプログラムを下記のように修正しました。
コメントを参考に、頭の中でトレースしてイメージを掴みました。
トークンIDの実際のものは’XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX’の所に入れます。
//メインの関数でAmazonにDVDの注文をする
function myFunction() {
const ss = SpreadsheetApp.getActiveSheet();
let lastRow = ss.getLastRow();//最終行を取得
for (let i = 2; i <= lastRow; i++) {
//もしもD列の「済」が空白だったらA列の「なまえ」を出力してD列を「済」にする
if (!ss.getRange(i, 4).getValue()) {
//AmazonがDVDの注文を受け取る
const body=ss.getRange(i, 1).getValue();
//ここでAmazonが宅配業者みたいなsendMessage関数にDVDの配達を依頼する
sendMessage(body);
ss.getRange(i, 4).setValue('済');
//もしも最終行以上になったらセル範囲を消去する
if (i >= lastRow) {
ss.getRange(2, 4, lastRow - 1).clearContent();
}
break;
}
}
}
//宅配業者のようなsendMessage関数がAmazonからDVDを受け取って、配達を行う
function sendMessage(body){
const cw=ChatWorkClient.factory({token:'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'});
cw.sendMessageToMyChat(body);
}
では早速、「ねこあつめ」の名前をChatworkに送ってみます。
実行すると、Chatworkにメッセージ「ヘキサにゃん」が送られました。
スプレッドシートは「ヘキサにゃん」のところに、処理済みの「済」が入っています。
他の猫ちゃんたちも同様にChatworkに送ってみます。
三匹目までの猫ちゃんを送ると、このようになり、最後のとらきちまで送ると、
クリアになって、再び最初の「ヘキサにゃん」から送れます。
これでは、「Chatwork」ではなく、「Catwork」ですね(=^x^=)mm
ご精読ありがとうございました。
■参考文献の紹介■
初めてGASを学ぶ方向け。
スプレッドシートの基本的な使い方からGASのベースとなるJavaScriptの基礎文法、GASでの初歩的なプログラミングを学べます。
GASに少し慣れて来たら、基礎固めとリファレンスとしてこの本を通してじっくり学べます。