iT邦幫忙

1

利用google app script透過line notify傳送google表單回覆,但連結無法點擊

  • 分享至 

  • xImage

大家好,
最近利用google app script透過line notify傳送google表單回覆,選項以及簡答類型的問題都可以傳到指定的群組沒有問題,但是上傳的圖片卻無法變成連結(不能點擊連結到雲端的圖片),情況如下圖:
https://ithelp.ithome.com.tw/upload/images/20230223/20157544dXUPQwnk25.png
以下是我從Boris大大那裡借來使用的程式碼:

//程式碼開始

function getFormData(e) {
  var token = "umr19KVROBpXRmxkTznIMxRyZMuDkRVByiG8VULOmK1";

  var form = FormApp.getActiveForm();  
  var currentItemResponses = e.response.getItemResponses();
  var message = "\n\n";
  for(var i = 0; i < currentItemResponses.length; i++) {
      message += currentItemResponses[i].getItem().getTitle() + ":" + currentItemResponses[i].getResponse() + "\n\n";
  }
  sendLineNotify(message, token);
}

function sendLineNotify(message, token){
  var options =
   {
     "method"  : "post",
     "payload" : {"message" : message},
     "headers" : {"Authorization" : "Bearer " + token}
   };
   UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options);
}

//程式碼結束

請問為什麼應該要是連結的地方卻無法顯示連結呢?以及該如何才能解決這個問題?
再麻煩各位有空的話解答一下了,謝謝大家!!

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
JamesDoge
iT邦高手 1 級 ‧ 2023-02-23 19:26:27

修改後的程式碼如下:

function getFormData(e) {
  var token = "umr19KVROBpXRmxkTznIMxRyZMuDkRVByiG8VULOmK1";
  var form = FormApp.getActiveForm();
  var currentItemResponses = e.response.getItemResponses();
  var message = "\n\n";
  for(var i = 0; i < currentItemResponses.length; i++) {
    var item = currentItemResponses[i].getItem();
    var response = currentItemResponses[i].getResponse();
    if (item.getType() == FormApp.ItemType.IMAGE) {
      var file = DriveApp.getFileById(response[0].getId());
      var blob = file.getBlob();
      var options = {
        "method"  : "post",
        "payload" : blob.getBytes(),
        "headers" : {"Authorization" : "Bearer " + token, "Content-Type": blob.getContentType()}
      };
      UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options);
    } else {
      message += item.getTitle() + ":" + currentItemResponses[i].getResponse() + "\n\n";
    }
  }
  sendLineNotify(message, token);
}

試試看

看更多先前的回應...收起先前的回應...
lhhh1204 iT邦新手 5 級 ‧ 2023-02-24 10:30:47 檢舉

你好,感謝回答!
從與表單連結的試算表中已確認圖片有上傳到google雲端硬碟,
https://ithelp.ithome.com.tw/upload/images/20230224/20157544aOQgxnsqto.png

另外也有使用您提供的程式碼重新試試看了,傳到line的狀況還是一樣,是文字而不是連結。
https://ithelp.ithome.com.tw/upload/images/20230224/20157544h7YHwVecTa.png

再麻煩大家了

JamesDoge iT邦高手 1 級 ‧ 2023-02-24 10:41:39 檢舉

我更新了 試試

lhhh1204 iT邦新手 5 級 ‧ 2023-02-24 11:12:47 檢舉

謝謝您,但還是沒辦法耶/images/emoticon/emoticon02.gif
https://ithelp.ithome.com.tw/upload/images/20230224/20157544JdZMMvrCiS.png
我這邊要提供什麼資訊會讓您比較好判斷是哪邊出了問題呢?

JamesDoge iT邦高手 1 級 ‧ 2023-02-24 11:21:23 檢舉

我更新了 再試試

lhhh1204 iT邦新手 5 級 ‧ 2023-02-24 11:49:37 檢舉

還是文字
https://ithelp.ithome.com.tw/upload/images/20230224/20157544ecpspIxB0j.png

0
bikelife
iT邦見習生 ‧ 2023-02-25 12:03:09

中午12:00:56 錯誤
TypeError: Cannot read properties of undefined (reading 'response')
getFormData @ 程式碼.gs:4
請問這是甚麼意思?

毛哥EM iT邦新手 2 級 ‧ 2023-02-25 19:27:10 檢舉

如果是doPost直接執行因為沒有傳入資料所以會有錯誤。這是正常的。如果要測試可以建立另一個函式帶入參數呼叫它

0
e21279
iT邦見習生 ‧ 2023-03-30 22:09:26

for(var i = 0; i < currentItemResponses.length; i++) {
message += currentItemResponses[i].getItem().getTitle() + ":" + currentItemResponses[i].getResponse() + "\n\n";
}

想請問一下這個程式碼是甚麼意思??
我想要改成只顯示1個問題及答案,不知道要怎麼改??

我要發表回答

立即登入回答