GASで「ねこあつめ」を「Chatwork」に送る(=^x^=)mm「ねこあつめシリーズ:その11」

この記事では、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に少し慣れて来たら、基礎固めとリファレンスとしてこの本を通してじっくり学べます。

サイトマップはこちらから

GASサンプル集に戻る
メインメニューに戻る
これからプログラミングを始める方へ
基本情報技術者へ
自己紹介

←前に戻るにゃん             次行くにゃん→