この記事では、GAS(Google Apps Script)で「ねこあつめ」をChatworkに送信する時に、メッセージを装飾して送る方法を掲載しています。
お世話になった記事は、いつも隣にITのお仕事さんの
【初心者向けGAS】チャットワークのメッセージ記法でBot送信するメッセージを装飾する方法
です。
今回の内容に入る前に、前回の復習をします。
前回はスプレッドシートの猫ちゃんの「なまえ」〜「とくちょう」までを配列として取得して、Chatworkに送ることによって、スプレッドシートのアクセス回数を格段に減らせました。
こちらのスプレッドシートです。
このスプレッドシートを元に、Chatworkに出力した画像とコードです。
//メインの関数でAmazonにDVDの注文をする
function myFunction() {
const ss = SpreadsheetApp.getActiveSheet();
let lastRow = ss.getLastRow();//最終行を取得
const token=PropertiesService.getScriptProperties().getProperty('CW_TOKEN');//←ここを追加
for (let i = 2; i <= lastRow; i++) {
//もしもD列の「済」が空白だったらA列の「なまえ」を出力してD列を「済」にする
if (!ss.getRange(i, 4).getValue()) {
let cat=ss.getRange(i,1,1,3).getValues();//←配列catで一気に1行3列分のデータを取得する ※getValue[s]でsが付く
//AmazonがDVDの注文を受け取る
let body=""; //←ここで、bodyにA列、B列、C列のデータを追加していくので、bodyをletで変数として宣言
body+=cat[0][0]+'\n';//A列:猫ちゃんの「なまえ」
body+=cat[0][1]+'\n';//B列:猫ちゃんの「しゅるい」
body+=cat[0][2]+'\n';//C列:猫ちゃんの「とくちょう」
//ここでAmazonが宅配業者みたいなsendMessage関数にDVDの配達を依頼する
sendMessage(token,body);
ss.getRange(i, 4).setValue('済');
//もしも最終行以上になったらセル範囲を消去する
if (i >= lastRow) {
ss.getRange(2, 4, lastRow - 1).clearContent();
}
break;
}
}
}
//宅配業者のようなsendMessage関数がAmazonからDVDを受け取って、配達を行う
function sendMessage(token,body){
const cw=ChatWorkClient.factory({token:token}); //←APIトークンの所をtokenに置き換える
cw.sendMessageToMyChat(body);
}
今回の内容に入る前に、ねこあつめ画像で癒されます。
さて、今回の内容に入ります。
Chatworkにメッセージを送る際にタグを使って、メッセージを装飾します。
角カッコを使った、「メッセージ記法」という書き方を使ってコードを書いて行きます。
ここでは、メッセージを[info]というタグを使って囲い始め、水平の線を[HR]というタグで挿入して、丸カッコを使って体裁を整えて、[/info]で閉じます。
タグは、シングルクォーテーションで囲います。
「/」は、バックスラッシュではなく、普通のスラッシュです。
下記のコードで、14行目から17行目までにタグを入れてコメントを付けました。
//メインの関数でAmazonにDVDの注文をする
function myFunction() {
const ss = SpreadsheetApp.getActiveSheet();
let lastRow = ss.getLastRow();//最終行を取得
const token=PropertiesService.getScriptProperties().getProperty('CW_TOKEN');//←ここを追加
for (let i = 2; i <= lastRow; i++) {
//もしもD列の「済」が空白だったらA列の「なまえ」を出力してD列を「済」にする
if (!ss.getRange(i, 4).getValue()) {
let cat=ss.getRange(i,1,1,3).getValues();//←配列catで一気に1行3列分のデータを取得する ※getValue[s]でsが付く
//AmazonがDVDの注文を受け取る
let body='[info]'; //←ここで、囲い枠線で装飾する
body+=cat[0][0]+'[hr]';//←A列:猫ちゃんの「なまえ」に水平線を入れる
body+=cat[0][1]+'\n';//B列:猫ちゃんの「しゅるい」
body+='('+cat[0][2]+')[/info]';//←C列:猫ちゃんの「とくちょう」を送ったら囲い枠線を閉じる
//ここでAmazonが宅配業者みたいなsendMessage関数にDVDの配達を依頼する
sendMessage(token,body);
ss.getRange(i, 4).setValue('済');
//もしも最終行以上になったらセル範囲を消去する
if (i >= lastRow) {
ss.getRange(2, 4, lastRow - 1).clearContent();
}
break;
}
}
}
//宅配業者のようなsendMessage関数がAmazonからDVDを受け取って、配達を行う
function sendMessage(token,body){
const cw=ChatWorkClient.factory({token:token}); //←APIトークンの所をtokenに置き換える
cw.sendMessageToMyChat(body);
}
まずは1匹目の猫ちゃん、「ヘキサにゃん」
1匹目の「ヘキサにゃん」が「済」になりました。
他のコ達も送ってみました。
ご精読ありがとうございました。
■参考文献の紹介■
初めてGASを学ぶ方向け。
スプレッドシートの基本的な使い方からGASのベースとなるJavaScriptの基礎文法、GASでの初歩的なプログラミングを学べます。
GASに少し慣れて来たら、基礎固めとリファレンスとしてこの本を通してじっくり学べます。