![見出し画像](https://assets.st-note.com/production/uploads/images/93034206/rectangle_large_type_2_3cdf1d09b671730aeae3064c696f6768.png?width=800)
「初めてのGoogle Apps Scriptで自動でチャットワークに色々と送る」をやるの巻
今日やった記事
改良ポイント
チャットワークではなくGoogleチャットでやる
チャットワークは使わないと思い、Googleチャットでやります!
しかし、Webhook機能は有料版しかないらしい。
自分が所属している団体の有料アカウントを使いWebhookを使ってみました。
メッセージを送るまでのプログラムは以下の記事を参考にしました。
getValue()があるので配列で取得する
GAS初級講座を受けた身としては、getValue()はなるべく避けたい。
getDataRange()で配列にしました。
新たに学んだこと
JSONにしないと送れない
JSONとは「JavaScriptで値を取り扱うためのドキュメント規格」
項目名と値のペアで記述する
JSONでは、項目名と値をペアで指定します。
また、項目名と値の区切りとして「:(コロン)」を利用します。
項目名は「”(ダブルクオーテーション)」で囲む
項目名は、”項目名”というようにダブルクオーテーションで囲みます。
’(シングルクオーテーション)は使えないため注意しましょう。
複数のペアを指定するときは「,(カンマ)」で区切る
複数のペアを指定したい場合には、ペアとペアの間に「,(カンマ)」を挿入します。
全体を{}(波カッコ) または[](カギ角カッコ)で囲む
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); //'太郎二郎三郎花子'
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を送信
}
}
}