貴安 我完全沒有寫程式的經驗 不過最近參考了許多網頁的文章
也成功寫出了 讓LINE BOT 可以放出 輪播範本
可是 google apps script 的 {} 最多只支援到 距離100
我的輪播範本 過長 有辦法解決嗎?
function doPost(e) {
var CHANNEL_ACCESS_TOKEN = ' :) ';
var msg = JSON.parse(e.postData.contents);
console.log(msg);
var replyToken = msg.events[0].replyToken;
var userMessage = msg.events[0].message.text;
//當line使用者發送訊息,即傳送指定訊息
if (typeof replyToken === 'undefined') {
return;
}
//----- 加這段,<=-1 表示找不到
if(userMessage.indexOf("測試")<=-1){
return;
}
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': replyToken,
'messages': [{
"type": "template",
"altText": "this is a carousel template",
"template": {
"type": "carousel",
"actions": [],
"columns": [
{
"thumbnailImageUrl": "https://cdn.hk01.com/di/media/images/1482995/org/9debcaf412ffe39134631798798abe2d.jpg/HY1JGrqV4eyVXssYntBCkA5JVGOPdFs0Hd6yLR3esi0?v=w1920",
"title": "狗也會讀書",
"text": "讀書",
"actions": [
{
"type": "message",
"label": "我也要當狗",
"text": "旺旺旺"
},
{
"type": "message",
"label": "我不要當狗",
"text": "喵喵喵"
}
]
},
{
"thumbnailImageUrl": "https://cdn.jendesstudio.com/articles/AC_1532677823_mPDn.jpg",
"title": "標題",
"text": "文字",
"actions": [
{
"type": "message",
"label": "動作 1",
"text": "動作 1"
},
{
"type": "message",
"label": "動作 2",
"text": "動作 2"
}
]
}
]
}
}],
}),
});
}
輪播範本 過長的話function doPost(e) 的 {} 會讀不到
我的建議是不要寫hard code
把固定的東西當模版,剩下的靠參數去動態生成你的訊息
如果不會的話,其實還有一招...Google Apps Script以下簡稱GAS
在GAS還可以新增另一個指令檔,檔案>新增>指令碼檔案
在裡面撰寫function 或是直接寫全域變數將你的訊息放在別的檔案
因為在GAS裡面同一個專案下的所有指令碼都等於同一個環境,不需要require就可以吃到其他檔案的變數或是function
當然這招是治標不治本啦...應該改變的是使用動態方式產生你要的訊息而不是寫死
也可以用一些工具,例如:JSON小工具
把你的json訊息minify縮成一行...
不過要注意的是,GAS在一行文字如果太多的情況下..瀏覽器好像會變很慢..
反正你試了就知道XD
// firstMessage.gs 撰寫全域變數
var firstMessage = {..............} ;
// secondMessage.gs 撰寫全域變數
var secondMessage = {...........} ;
// thirdMessage.gs 使用function取得訊息
function getThirdMessage()
{
return {.........} ;
}
// main.gs
switch (message)
{
case '一'
// 抓取firstMessage回覆
break ;
case '二':
// 抓取firstMessage回覆
break ;
}
麻煩錯誤訊息要提供,不然隔空抓藥有點麻煩
我個人推薦用別的IDE(atom, vscode)寫好後再貼上去gs
對了,如果覺得想試試強型別可以用typescript寫
然後關於那個橘色的 } 號不用擔心
只是他是橘色的而已
本身你寫的功能不會有半點的影響
(破千行的路過)
function doPost(e) {
var CHANNEL_ACCESS_TOKEN = '';
var msg = JSON.parse(e.postData.contents);
console.log(msg);
var replyToken = msg.events[0].replyToken;
var userMessage = msg.events[0].message.text;
//當line使用者發送訊息,即傳送指定訊息
if (typeof replyToken === 'undefined') {
return;
}
//----- 加這段,<=-1 表示找不到
if(userMessage.indexOf("測試")<=-1){
return;
}
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': replyToken,
'messages': [{
"type": "template",
"altText": "this is a carousel template",
"template": {
"type": "carousel",
"actions": [],
"columns": [
{
"thumbnailImageUrl": "https://cdn.hk01.com/di/media/images/1482995/org/9debcaf412ffe39134631798798abe2d.jpg/HY1JGrqV4eyVXssYntBCkA5JVGOPdFs0Hd6yLR3esi0?v=w1920",
"title": "狗也會讀書",
"text": "讀書",
"actions": [
{
"type": "message",
"label": "我也要當狗",
"text": "旺旺旺"
},
{
"type": "message",
"label": "我不要當狗",
"text": "喵喵喵"
}
]
},
{
"thumbnailImageUrl": "SPECIFY_YOUR_IMAGE_URL",
"title": "標題",
"text": "文字",
"actions": [
{
"type": "message",
"label": "動作 1",
"text": "動作 1"
},
{
"type": "message",
"label": "動作 2",
"text": "動作 2"
}
]
},
{
"thumbnailImageUrl": "SPECIFY_YOUR_IMAGE_URL",
"title": "標題",
"text": "文字",
"actions": [
{
"type": "message",
"label": "動作 1",
"text": "動作 1"
},
{
"type": "message",
"label": "動作 2",
"text": "動作 2"
}
]
},
{
"thumbnailImageUrl": "SPECIFY_YOUR_IMAGE_URL",
"title": "標題",
"text": "文字",
"actions": [
{
"type": "message",
"label": "動作 1",
"text": "動作 1"
},
{
"type": "message",
"label": "動作 2",
"text": "動作 2"
}
]
},
{
"thumbnailImageUrl": "SPECIFY_YOUR_IMAGE_URL",
"title": "標題",
"text": "文字",
"actions": [
{
"type": "message",
"label": "動作 1",
"text": "動作 1"
},
{
"type": "message",
"label": "動作 2",
"text": "動作 2"
}
]
},
{
"thumbnailImageUrl": "SPECIFY_YOUR_IMAGE_URL",
"title": "標題",
"text": "文字",
"actions": [
{
"type": "message",
"label": "動作 1",
"text": "動作 1"
},
{
"type": "message",
"label": "動作 2",
"text": "動作 2"
}
]
},
{
"thumbnailImageUrl": "SPECIFY_YOUR_IMAGE_URL",
"title": "標題",
"text": "文字",
"actions": [
{
"type": "message",
"label": "動作 1",
"text": "動作 1"
},
{
"type": "message",
"label": "動作 2",
"text": "動作 2"
}
]
},
{
"thumbnailImageUrl": "SPECIFY_YOUR_IMAGE_URL",
"title": "標題",
"text": "文字",
"actions": [
{
"type": "message",
"label": "動作 1",
"text": "動作 1"
},
{
"type": "message",
"label": "動作 2",
"text": "動作 2"
}
]
},
{
"thumbnailImageUrl": "SPECIFY_YOUR_IMAGE_URL",
"title": "標題",
"text": "文字",
"actions": [
{
"type": "message",
"label": "動作 1",
"text": "動作 1"
},
{
"type": "message",
"label": "動作 2",
"text": "動作 2"
}
]
},
{
"thumbnailImageUrl": "SPECIFY_YOUR_IMAGE_URL",
"title": "標題",
"text": "文字",
"actions": [
{
"type": "message",
"label": "動作 1",
"text": "動作 1"
},
{
"type": "message",
"label": "動作 2",
"text": "動作 2"
}
]
}
]
}
}],
}),
});
}
阿.. 我好像找到原因了 因為我沒把 "thumbnailImageUrl": 弄成圖片..
...好 ...好喔