見出し画像

「初めてのGoogle Apps Scriptで自動でチャットワークに色々と送る」をやるの巻

今日やった記事

改良ポイント

チャットワークではなくGoogleチャットでやる

チャットワークは使わないと思い、Googleチャットでやります!
しかし、Webhook機能は有料版しかないらしい。
自分が所属している団体の有料アカウントを使いWebhookを使ってみました。
メッセージを送るまでのプログラムは以下の記事を参考にしました。

getValue()があるので配列で取得する

GAS初級講座を受けた身としては、getValue()はなるべく避けたい。
getDataRange()で配列にしました。


新たに学んだこと

JSONにしないと送れない

JSONとは「JavaScriptで値を取り扱うためのドキュメント規格」

項目名と値のペアで記述する
JSONでは、項目名と値をペアで指定します。
また、項目名と値の区切りとして「:(コロン)」を利用します。

項目名は「”(ダブルクオーテーション)」で囲む
項目名は、”項目名”というようにダブルクオーテーションで囲みます。
’(シングルクオーテーション)は使えないため注意しましょう。

複数のペアを指定するときは「,(カンマ)」で区切る
複数のペアを指定したい場合には、ペアとペアの間に「,(カンマ)」を挿入します。

全体を{}(波カッコ) または[](カギ角カッコ)で囲む
JSONのデータを記述する場合、全体を{}(波カッコ) または[](カギ角カッコ)で囲みます。

https://camp.trainocate.co.jp/magazine/whats-json/

JSON.stringify() メソッドで値をJSON 文字列に変換する

const text = {text:`text`}
JSON.stringify("text") //textをJSON文字列に変換してくれる
// expected output: "{"text":"text"}"


配列の要素同士を合体

join()メソッドで、配列の要素を結合できる。
区切り文字を引数に取ることで、文字と文字の間に区切り文字を入れることができる。
「`n\`」を引数に取ることで改行できる。

var arr = ["太郎", "二郎", "三郎", "花子"];

//引数を省略
var str1 = arr.join();
alert(str1); //'太郎,二郎,三郎,花子'

//区切り文字は"と"
var str2 = arr.join("と");
alert(str3); //'太郎と二郎と三郎と花子'

//区切り文字は空文字列
var str3 = arr.join("");
alert(str3); //'太郎二郎三郎花子'

https://uxmilk.jp/30315

IFTTTを使うとTweetがとれる

IFTTTの機能を使うと、Tweetがスプレッドシートに記録することができる。
これは楽しい。
どんどんTweetしたくなります。

気付き

  • 確かにGAS初級でやったことを確実に行っていけば何でもできそう!

  • 外部ツールの設定などに時間がかかるので、結構時間がかかる。

  • 配列便利。ありがとう配列。

  • 配列のメソットを学ぶともっと配列マスターになれそう。

  • 次は、配列の中を検索すると、getValue()を使わなくてもできそう

作成したプログラム①

「Google Apps Scriptの第一歩、初心者でもチャットワークにメッセージを送れる」

function sendMessageFromGAS() {

  const url = `着信 WebhookのURL`;

  const message = { 'text': "これはテストです" };
  const options = {
    'method': 'POST',
    'headers': {
      'Content-Type': 'application;caerset=UTF-8'
    },
    'payload': JSON.stringify(message)  //payloadにmessageをJSON化して作成
  };

  UrlFetchApp.fetch(url,options)  //urlにoptionsを送信

}

作成したプログラム②

「Google Apps Scriptでチャットワークの名言botを作る方法」

function sendMessageFromGAS() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const maxRow = ss.getActiveSheet().getDataRange().getLastRow();
  const numRow = Math.floor(1+Math.random() * (maxRow - 1));  //ランダムな数字(1~maxRow)を成形

  const data = ss.getActiveSheet().getDataRange().getValues()  //data配列を作成
  const text = data[numRow].join(`\n`) //data配列からnumRow番目をjson化

  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)

}

作成したプログラム③

「Google Apps ScriptでTwitterの検索結果を自動でチャットワークに通知」

function sendMessageFromGAS() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getActiveSheet()
  const maxRow = sheetDate.getLastRow();
  const data = sheet.getDataRange().getValues();

  for (i = 1; i <= maxRow - 1; i++) {
    if (data[i][4] != `Sent`) {
      const text = data[i][2];  //textを作成
      sheet.getRange(i + 1, 5).setValue(`Sent`);  //「sent」を入力

      const message = { 'text': text };  //textを使って、messageを作成
      const options = {
        'method': 'POST',
        'headers': {
          'Content-Type': 'application;caerset=UTF-8'
        },
        'payload': JSON.stringify(message)  //payloadにmessageをJSON化して作成
      };
        const url = `着信 WebhookのURL`;
     UrlFetchApp.fetch(url, options) //urlにoptionsを送信
    } 
  }
}