來看以下的步驟:
Step 1. 在Google雲端硬碟中新增一個名為Line Bot的Google Apps Script檔案。
Step 2. 輸入以下的程式碼存檔。
var CHANNEL_ACCESS_TOKEN = '你的Token';
//抓取IP位置
function doGet(e) {
return ContentService.createTextOutput(UrlFetchApp.fetch("http://ip-api.com/json"));
}
//處理Line server傳進來訊息,再送出訊息到用戶端
function doPost(e) {
var reply_token= JSON.parse(e.postData.contents).events[0].replyToken;
if (typeof reply_token === 'undefined') {
return;
}
var user_message = JSON.parse(e.postData.contents).events[0].message.text;
var url = 'https://api.line.me/v2/bot/message/reply';
UrlFetchApp.fetch(url, {
'headers': {
'Content-Type': 'application/json; charset=UTF-8',
'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN,
},
'method': 'post',
'payload': JSON.stringify({
'replyToken': reply_token,
'messages': [{
'type': 'text',
'text': user_message,
}],
}),
});
return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON);
}
Step 3. 設定部署成網路應用程式,「發佈」->「部署成網路應用程式」。
Step 4. 「具有應用程式存取權的使用者」設定成「任何人、甚至是匿名使用者」。
Step 5. 對外發佈與對外服務的權限。
Step 6 . 「點選畫面最新的程式碼」取得Line Messaging API後台所需「白名單IP」、「目前的網路應用程式網址」為「Webhook URL」這個畫面很重要。
「白名單IP」。
「Webhook URL」。
Step 7 . 設定 Line Messaging API 後台「白名單IP」、「Webhook URL」。
PS:根據筆者經驗「白名單IP」可以不填,填了反而要注意更多IP的設定,但「Webhook URL」一定要填。
到這裡已完成設定,接著進行測試。
執行結果:
修改一下上面的程式碼。
var CHANNEL_ACCESS_TOKEN = '你的Token';
//抓取IP位置
function doGet(e) {
return ContentService.createTextOutput(UrlFetchApp.fetch("http://ip-api.com/json"));
}
//處理Line server傳進來訊息,再送出訊息到用戶端
function doPost(e) {
var events = JSON.parse(e.postData.contents).events[0];
var reply_token = events.replyToken;
if (typeof reply_token === 'undefined')
return;
var url = 'https://api.line.me/v2/bot/message/reply';
var header = {
'Content-Type': 'application/json; charset=UTF-8',
'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN,
}
var payload = {
'replyToken': reply_token,
'messages' : ProcMsg(events.message)
}
var options = {
'headers': header,
'method': 'post',
'payload': JSON.stringify(payload)
}
UrlFetchApp.fetch(url, options);
return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON);
}
function ProcMsg(message)
{
var type = message.type;
var retMsg;
switch(type)
{
case 'text':
retMsg = {
'type': type,
'text': message.text
};
break;
case 'image':
retMsg = {
'type': type,
};
break;
case 'sticker':
retMsg = {
'type': type,
'packageId': message.packageId,
'stickerId': message.stickerId
};
break;
}
return [retMsg];
}
執行結果:
PS:這裡有個重點,就是當Apps Script程式修改後,一定要記得重新發佈「佈署為網路應用程式」,這裡有個重點一定要注意,就是在發佈的視窗中,記得將「專案版本」設定為「新增」,不然你所修改的部分將無法被執行出來,這點很重要! 重要! 重要!。
參考資料:
- Line BotをGoogle App Scriptで無料で手軽に試してみる。
- LINE Botをサーバーレスで開発!Google Apps ScriptとLINE Messaging APIを使ってチャットボットを作ってみた
- 初心者がGASでSlack Botをつくってみた
- おみくじ LINE BOT のレシピ
- Line Bot 入門與應用(1) --- Line Messaging API V2 + PHP 串接
















