iT邦幫忙

0

google apps script 一些問題

  • 分享至 

  • xImage

貴安 我完全沒有寫程式的經驗 不過最近參考了許多網頁的文章

也成功寫出了 讓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) 的 {} 會讀不到

看更多先前的討論...收起先前的討論...
dragonH iT邦超人 5 級 ‧ 2019-09-05 09:40:48 檢舉
建議你直接貼你看到的錯誤訊息

或者貼code(文字) 和 圖片 來輔助你的問題
Han iT邦研究生 1 級 ‧ 2019-09-05 10:54:40 檢舉
直接hard code寫你的訊息嗎??
可以考慮用迴圈將你的訊息組出來
zxz13554 iT邦新手 5 級 ‧ 2019-09-05 15:34:31 檢舉
補上問題了 (第一次用這個不太熟悉
dragonH iT邦超人 5 級 ‧ 2019-09-05 15:39:36 檢舉
...你的 token 要不要遮一下

然後

還是看不懂你說的

輪播範本 過長

是指什麼
zxz13554 iT邦新手 5 級 ‧ 2019-09-05 16:03:31 檢舉
就是 目前指令都是包在 function doPost(e) 的 {} 裡面 可是 google apps script 的{}好像只支援到 100行 EX: {}變成橘色不是綠色
如果我用輪播範本超過3個 他就會超過100行
dragonH iT邦超人 5 級 ‧ 2019-09-05 16:08:03 檢舉
你怎麼知道只支援到 100行

是有看到錯誤訊息嗎

要不要截圖錯誤訊息呢

因為 js code 通常沒再管你長度

除非你用 eslint 之類的東西
zxz13554 iT邦新手 5 級 ‧ 2019-09-06 22:32:44 檢舉
是沒有錯誤訊息
可是變成橘色的{ 時候 用關鍵字 無法觸發 我所設定的輪播撥放
然後就發現 超過100行的時候 他會變成橘色( 所以就推定可能是這格問題
zxz13554 iT邦新手 5 級 ‧ 2019-09-07 16:40:05 檢舉
找到原因了 是因為 輪播的"thumbnailImageUrl 要放圖片 才能觸發((
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
Han
iT邦研究生 1 級 ‧ 2019-09-05 16:17:38

我的建議是不要寫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 ;
}

we684123 iT邦研究生 4 級 ‧ 2019-09-06 11:37:23 檢舉

麻煩錯誤訊息要提供,不然隔空抓藥有點麻煩

我個人推薦用別的IDE(atom, vscode)寫好後再貼上去gs
對了,如果覺得想試試強型別可以用typescript寫

然後關於那個橘色的 } 號不用擔心
只是他是橘色的而已
本身你寫的功能不會有半點的影響
(破千行的路過)

we684123 iT邦研究生 4 級 ‧ 2019-09-06 11:40:13 檢舉

阿e04
對不起我回錯地方了
我目前用手機網頁版沒找到能刪除留言的地方
我回去再嘗試看看Orz
真的抱歉!

好吧 沒得刪,只能改

zxz13554 iT邦新手 5 級 ‧ 2019-09-06 22:33:54 檢舉

好的 我再研究看看

0
we684123
iT邦研究生 4 級 ‧ 2019-09-06 11:38:41

麻煩錯誤訊息要提供,不然隔空抓藥有點麻煩

我個人推薦用別的IDE(atom, vscode)寫好後再貼上去gs
對了,如果覺得想試試強型別可以用typescript寫

然後關於那個橘色的 } 號不用擔心
只是他是橘色的而已
本身你寫的功能不會有半點的影響
(破千行的路過)

看更多先前的回應...收起先前的回應...
zxz13554 iT邦新手 5 級 ‧ 2019-09-06 22:34:39 檢舉

可是我發現 他只要變成橘色 我的關鍵字就觸發不了了

we684123 iT邦研究生 4 級 ‧ 2019-09-07 14:21:01 檢舉

hmmm... 你能否PO一下你完整的code?

zxz13554 iT邦新手 5 級 ‧ 2019-09-07 16:35:22 檢舉
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"
          }
        ]
      }
    ]
  }
}],
    }),
  });
}

zxz13554 iT邦新手 5 級 ‧ 2019-09-07 16:39:30 檢舉

阿.. 我好像找到原因了 因為我沒把 "thumbnailImageUrl": 弄成圖片..

we684123 iT邦研究生 4 級 ‧ 2019-09-08 05:06:02 檢舉

...好 ...好喔

我要發表回答

立即登入回答