Open7

Hello, GAS

Amane OtsukaAmane Otsuka

Gooleドライブでシートを作り、拡張機能でApps Scriptを作る

Amane OtsukaAmane Otsuka
function doGet() {
// 拡張元のスプレッドシートを用意する
  let sheet = SpreadsheetApp.getActive().getActiveSheet();
// シートから値を入手する
  let values = sheet.getDataRange().getValues();
// list.htmlからフォーマットを用意
  let templete = HtmlService.createTemplateFromFile("list");
  templete.links = values;
// HTMLを組み立て
  return templete.evaluate();
}
Amane OtsukaAmane Otsuka

/// javascript
function doPost(e){
let sheet = SpreadsheetApp.getActive().getActiveSheet();
sheet.appendRow([new Date(), e.postData.contents]); // e.postData.contents に LINE からの json 形式データがある
}
///

デプロイして得られたURLをLINE Developersのwebhookに指定

公式アカウントに対して送られたメッセージ全てについてdoPost()が発火する

Amane OtsukaAmane Otsuka

//
function reply(contents){
let channelAccessToken = "「メッセージ送受信設定>アクセストークン」の長い文字列をここに貼り付ける";
let replyUrl = "https://api.line.me/v2/bot/message/reply"; // LINE にデータを送り返すときに使う URL
let options = {
method: 'post',
contentType: 'application/json',
headers: {
Authorization: 'Bearer ' + channelAccessToken
},
payload: JSON.stringify(contents) // 送るデータを JSON 形式に変換する
};
UrlFetchApp.fetch(replyUrl, options);
}
//

curl -v -X POST https://api.line.me/v2/bot/message/reply
-H 'Content-Type: application/json'
-H 'Authorization: Bearer {channel access token}'
-d '{
"replyToken":"nHuyWiB7yP5Zw52FIkcQobQuGDXCTA",
"messages":[
{
"type":"text",
"text":"Hello, user"
},
{
"type":"text",
"text":"May I help you?"
}
]
}'

リファレンスを見ると、メッセージを送る時のエンドポイントが記載されている。
応答メッセージを送る時のエンドポイントを選択
リクエストの例には
ヘッダーにContent-TypeとAuthorizationを指定する
bodyにJSONを指定する