之前問題解決了,謝謝老師的指導,另外請教一個問題, 我修改的程式碼 //程式碼開始 function myFunction(e) { var token = "KE6FDty0Vc2IgHPN4rRmi11Qnz1KNNV8xl4mG1pGmPr"; var spreadSheet = SpreadsheetApp.getActive(); var message = e.values[0] + "
@@borispcp //程式碼開始 function myFunction(e) { var token = "KE6FDty0Vc2IgHPN4rRmi11Qnz1KNNV8xl4mG1pGmPr"; var spreadSheet = SpreadsheetApp.getActive(); var message = e.values[0] + "
請教您:請問我語法是不是不對,可以收到時間,沒有內容,謝謝 //程式碼開始 function myFunction(e) { var token = "LINE KEY"; var spreadSheet = SpreadsheetApp.getActive(); var message = e.values[0] + "
Google 表單傳送至試算表的資料,理論上不會有「表單加總的試算表那格」, 因為承接表單資料的試算表只是用來單純呈現表單所收到的資料,無法自動進行試算表函式功能。 所以要達成你所說的狀況,比較簡單的方法兩種辦法。 1.直接在程式內增加將資料加總的程式碼,然後將加總結果丟到另一個變數,並將這個變數值一樣由 Line 傳回來。 2.藉由第三方擴充功能(如:Copy Down)增加所謂「表單加總的試算表那格」,然後你的程式在收到表單傳送後先啟動第三方擴充功能,然後再寫程式碼將那格的資料用 Line 傳回來。 我個人會比較偏向用 1 的方法。
抱歉老師
想詢問
TypeError: Cannot read property '0' of undefined
at myFunction(程式碼:6:25)
這部分是哪裡出問題呢
老師,不好意思,我在執行的時候,程式編輯器下方有執行記錄出現這些訊息
執行記錄
通知 開始執行
錯誤
TypeError: Cannot read property 'values' of undefined
myFunction @ 程式碼.gs:5 ← 我點擊這個 「@ 程式碼.gs:5 」滑鼠游標會移動到 var message = e.values[0] + "
"; 這一行的values[0]前面
請問是因為我那裡設定錯誤嗎?
你應該沒有把這部影片看完吧,我裡面有解釋喔。
@@borispcp 老師 我是好學生,我有看完,且反覆看了好幾遍,可能我比較粗心沒有注意到細節,我再多看看老師裡面的解說。謝謝老師播空解釋。
想請問老師,如果是用原有的試算表內容傳送至notify要如何設定呢?
如,我設定好個人的薪資表,我想要把個人薪資傳送到每個加入我的notify 的使用者,而且要個別通知,如果是這樣的情況要如何撰寫及設定呢?
老師您好!我依照您教學指示,操作到3:59點擊現有專案啓動程序時,我的欄位裡沒有這個圖案,請問我是少了什麼步驟嗎?
我發現問題了,因為改新版面的關係,要另外從左邊選單裡的「觸發條件」裡面設定。
不好意思,我的程式都已經填寫完畢,line權杖也沒問題,但每次執行任務都會顯示「TypeError: 無法讀取 undefined 的「values」屬性。 (第 5 行,檔案名稱:程式碼)」這是怎麼回事?影片內有說是因為還沒有人填寫表單,但填寫過後依然會顯示一樣的問題,式哪裡有錯嗎?程式在下方
//程式碼開始
function myFunction(e) {
var token = "line權杖沒問題";
var message = e.values[0] + "
";
sendLineNotify(message, token);
}
function sendLineNotify(message, token){
var options =
{
"method" : "post",
"payload" : "message=" + message,
"headers" : {"Authorization" : "Bearer " + token}
};
UrlFetchApp.fetch("notify-api.line.me/api/notify", options);
}
//程式碼結束
這個程式碼需要的是「傳送表單」時執行才有效,而不能在編輯器裡直接執行,不管有沒有人填寫過表單,都不能在編輯器裡執行。
老師,請問我可以用B那一列的就可以了嗎? 不想用橫的也不想列出時間 我想用一個名單 查詢時候只列出B列名單這樣 請問這樣怎麼做?
真的非常感謝老師創辦教學頻道,非常實用!
之前問題解決了,謝謝老師的指導,另外請教一個問題,
我修改的程式碼
//程式碼開始
function myFunction(e) {
var token = "KE6FDty0Vc2IgHPN4rRmi11Qnz1KNNV8xl4mG1pGmPr";
var spreadSheet = SpreadsheetApp.getActive();
var message = e.values[0] + "
";
message += e.values[1] + "姓名:
";
message += e.values[2] + "參加人數:
";
message += e.values[3] + "素食人數:
";
message += e.values[4];
sendLineNotify(message, token);
}
結果出來
【交接報名即時通】 2020/1/19 上午 9:28:15
李震姓名:
2參加人數:
0素食人數:
0933444333
請問如何修改出來的結果是
姓名:李震
參加人數:2
素食人數:0
聯絡電話:0933444333
e.values[] + 標題,加號兩邊對調。
然後e.values[4] 記得加上 “聯絡電話”
@@borispcp //程式碼開始
function myFunction(e) {
var token = "KE6FDty0Vc2IgHPN4rRmi11Qnz1KNNV8xl4mG1pGmPr";
var spreadSheet = SpreadsheetApp.getActive();
var message = e.values[0] + "
";
message += e.values[1] + "
姓名:";
message += e.values[2] + "
參加人數:";
message += e.values[3] + "
素食人數:";
message += e.values[4] + "
聯絡電話:";
sendLineNotify(message, token);
結果:
【交接報名即時通】 2020/1/22 上午 11:24:13
李小龍
姓名:2
參加人數:0
素食人數:123456789
聯絡電話:
e.values[] + 標題,加號兩邊對調。這句話不了解?
你程式碼不是有好幾行 e.values[數字] + 標題,(標題就是姓名、參加人數這些),
改成 標題 + e.values[數字]
@@borispcp 老師的對不起,還是不行。
var message = e.values[0]+"
";
message = 姓名:+ e.values[1]"
";
message = 參加人數:+ e.values[2]"
";
message = 素食人數:+ e.values[3]
";
message = 聯絡電話:+ e.values[4];
sendLineNotify(message, token);
結果:
【交接報名即時通】 2020/1/23 上午 10:55:14
王小明姓名:
1參加人數:
0素食人數:
123456789
請教您:請問我語法是不是不對,可以收到時間,沒有內容,謝謝
//程式碼開始
function myFunction(e) {
var token = "LINE KEY";
var spreadSheet = SpreadsheetApp.getActive();
var message = e.values[0] + "
";
var message += e.values[1] + "訂購者
";
var message += e.values[2] + "產品
";
var message += e.values[3];
sendLineNotify(message, token);
}
function sendLineNotify(message, token){
var options =
{
"method" : "post",
"payload" : {"message" : message},
"headers" : {"Authorization" : "Bearer " + token}
};
UrlFetchApp.fetch("notify-api.line.me/api/notify", options);
}
//程式碼結束
「可以收到時間」是指 Line 上面能收到表單送出的時間的訊息嗎?
如果是的話,那表示程式碼本身沒有錯誤,
因為有錯誤的話在中間程式就會中斷執行,根本沒有機會傳送訊息到 Line 裡面。
謝謝您的回覆,我再試試!@@borispcp
請問若要訊息同時將表單加總的試算表那格總計傳到LINE上,您下面留言有回覆可以
1.直接在程式內增加將資料加總的程式碼,然後將加總結果丟到另一個變數,並將這個變數值一樣由 Line 傳回來。
請問上述的方式要怎麼做呢?
我有看到別人教在試算表下面增加一頁工作表2,將工作表1要加總的函式寫在工作表2當中,確實每次提交表單後工作表2會顯示總金額,但是程式碼應該如何寫才能讓工作表2中的總金額也在提交表單後,傳line到我的訊息中呢?
你可以參考看看我新的教學影片:
ruclips.net/video/4lPd9AgUOVs/видео.html
var message = e.values[0] + "
"; 執行會遇這個問題怎麼解阿 : TypeError: 無法讀取 undefined 的「values」屬性。 (第 5 行,檔案名稱:程式碼), 有問題 ?如何解決
請問...我想在line的訊息顯示 「欄位名稱+內容」如何設定?
ex:原程式碼var message += e.values[1] + "通報了一件緊急事情
";
line顯示:Boris通報了一件緊急事情
若改成line顯示:通報人Boris通報了一件緊急事情
程式碼要如何修改?
你可以參考下面的影片。
ruclips.net/video/WpwQaHQ7RpI/видео.html
老師,請問如果填表人不在綁定的群組中,是否能夠透過新增一個欄位,讓填表人寫上自己的Line ID,在送出表單的時候,訊息除了通知綁定的Line群組以外,也同步可以傳給填表人相同的表單內容呢?
除非你有那個人的line notify token,不然沒有辦法。
@@borispcp 謝謝老師!!
想請教一下
我第一個表單套用這個程式碼之後執行沒有問題
但第二個表單要執行這個程式碼之後 就開始出現錯誤
有設定第二個LINE權杖
但
//程式碼開始
function myFunction(e) {
var token = "Line Notify 的權杖";
var spreadSheet = SpreadsheetApp.getActive();
↓↓↓這裡開始無法執行
var message = e.values[0] + "
";
message = e.values[1] + "
";
message = e.values[2]";
↑↑↑
是否要更改什麼?
sendLineNotify(message, token);
}
function sendLineNotify(message, token){
var options =
{
"method" : "post",
"payload" : {"message" : message},
"headers" : {"Authorization" : "Bearer " + token}
};
UrlFetchApp.fetch("notify-api.line.me/api/notify", options);
}
//程式碼結束
謝謝~~分享
第二個你程式是寫在表單裡還是寫在試算表裡?
請問若要訊息同時將表單加總的試算表那格總計傳到LINE上,那程式如何加上寫呢?
Google 表單傳送至試算表的資料,理論上不會有「表單加總的試算表那格」,
因為承接表單資料的試算表只是用來單純呈現表單所收到的資料,無法自動進行試算表函式功能。
所以要達成你所說的狀況,比較簡單的方法兩種辦法。
1.直接在程式內增加將資料加總的程式碼,然後將加總結果丟到另一個變數,並將這個變數值一樣由 Line 傳回來。
2.藉由第三方擴充功能(如:Copy Down)增加所謂「表單加總的試算表那格」,然後你的程式在收到表單傳送後先啟動第三方擴充功能,然後再寫程式碼將那格的資料用 Line 傳回來。
我個人會比較偏向用 1 的方法。
請問我是選擇使用第二個方式(Copy Down),在運算表都可以計算出數值,也在程式碼有增加計算值欄,但就是無法把計算的數值呈現在LINE---message += e.values[7] + "---巧克力大包$500
";
message += e.values[8] + "---蔓越莓+藍莓小包$300
";
message += e.values[9] + "---蔓越莓+藍莓大包$500
";
message += e.values[10] + "---元是這筆訂單總額
"; ==>文字可以呈現在line,只有數值呈現不出來,請教要如何編寫這部分呢?
可以私訊請教您這個問題嗎?我的mail : pogya30619@hotmail.com
mika tseng 想先確認兩件事,
第一、你的意思是你程式碼中e.values[10]的值是用 CopyDown完成的嗎?
第二、如果上述第一項是事實,你可以執行成功沒有錯誤訊息嗎?因為理論上CopyDown執行的結果應該是無法用e.values來取得的啊。
第一、e.values[10]的值是用 CopyDown完成的嗎=>YES
第二、執行沒有錯誤訊息喔!! 附上在LINE的顯示部分
第三、CopyDown執行的結果應該是無法用e.values來取得=>這就是我想請教您的部分了!!!小弟不才
【test】 2018/7/17 下午 9:04:08
雪雲酥餅
男性---是我想送的對象
盒裝---是我要的包裝種類
---原味小包$300
3---原味大包$500
---巧克力小包$300
3---巧克力大包$500
3---蔓越莓 藍莓小包$300
---蔓越莓 藍莓大包$500
undefined---元是這筆訂單總額 ==>無法顯示數值
===================================
var message = e.values[0] + "
";
message += e.values[1] + "
";
message += e.values[2] + "---是我想送的對象
";
message += e.values[3] + "---是我要的包裝種類
";
message += e.values[4] + "---原味小包$300
";
message += e.values[5] + "---原味大包$500
";
message += e.values[6] + "---巧克力小包$300
";
message += e.values[7] + "---巧克力大包$500
";
message += e.values[8] + "---蔓越莓+藍莓小包$300
";
message += e.values[9] + "---蔓越莓+藍莓大包$500
";
message += e.values[10] + "---元是這筆訂單總額
"; ==>請問可以用什麼來取代呢?
感謝老師非常有耐心的指導,已經達到我要的效果了。太棒了,
有問題再請教您
Lu Boris
您好 請問如果同時要設定多個權杖收到通知
請問該怎麼寫呢?
var token = "Line Notify 的權杖";
這一行一直重複就可以了嗎
人資部 高雄林皇宮 關於這個問題,你可以參考 ruclips.net/video/WpwQaHQ7RpI/видео.html 這部影片下方網友 Sai 和我的討論串。
@@borispcp 謝謝您
真的感謝老師的教授 !
點選審核權限之後直接被google封鎖,不曉得老師知道有什麼可能原因嗎?
畫面中有應該有個「進階」,點下去後把捲動軸往下捲一點,然後會看到一個連結寫著一些東西,最後寫著「(不安全)」,把這個連結點下去應該就沒問題了。
違
我在填入表單內容後 後台 excel 有同步 可是line 沒有?????
這功能太有趣了!! 多謝教學
老師您好,最近在填寫完google表單後,他在LINE會跑兩次結果出現,之前同樣的設定跟程式碼不會這樣,請問你知道是什麼原因嗎?
戴妤亘 不好意思請問一下,
你是同一個表單,之前沒問題現在出問題;
還是同樣的程式碼,之前用過一個表單沒有問題,最近新用了一份表單然後出問題了?
@@borispcp 同個程式碼用最近新的表單 , 是google又改了什麼嗎 ?
理論上不該有這種情況。
你可以把表單和試算表的權限開給我的帳號:boris.ssps98@gmail.com
我看看是否出了什麼狀況。
已用另一個帳號開權限給你
@@魚丸喵 我試了你給我的這兩個檔案,並沒有發生妳說的這種情況啊!
最後我把token換回你的然後送出了一份表單,請問你有收到兩次結果嗎?
出現→TypeError: Cannot read property '0' of undefined at myFunction←的錯誤訊息,如何解
你應該是直接在編輯器裡面執行程式吧?
使用表單的時候,想要開啟指令碼編輯器,但每次開啟的時候總是顯示
"很抱歉,目前無法開啟這個檔案。
請檢查地址並再試一次。"
'想請問一下是哪裡出了問題呢
請問能錄一下您的操作過程給我看好嗎?
送表單後一次跳3則通知,請問要怎麼修改程式碼
使用程式碼寫在表單裡的版本,不要使用寫在試算表的版本。
如果堅持程式碼要使用寫在試算表裡面的版本,
那要讓表單的「第一題」是必填題目,然後照著下面這部影片去做即可。
ruclips.net/video/uiYA4IOfDEo/видео.html
老師您好,承做某單位報名表單,觸及提交後line呈現兩次。提交後接收學員報名表單資料沒錯但..緊接著出現全空白表單了。如何解決不再出現重復空白表單。謝謝
關於你提的這個問題,我自己是沒有遇到過。
但是曾經有一個網友和你有一樣的問題。
當時我有請他分享他的檔案給我看,
可是遺憾的是,用分享的方式還是有很多地方是看不到的。
所以那一次我沒有辦法解決網友的這個困擾。
除非能使用你的帳號和密碼直接進去看看執行紀錄,
不然很難判斷出到底是什麼原因造成的。
最近研究了一些文件,有了一些想法,
想請問一下,你當時程式碼是寫在 Google 表單裡面還是 Google 試算表裡面?謝謝!
Lu Boris 試算表裡面
求救老師,全部照做,notify沒跳出來
請問老師我設定成功,可以傳給一對一(個人自己),但是無法傳給群組,請問老師如何解決?
請問你一開始建立 Line Notify Token 時,就有指向你要傳送的那個群組嗎?
@@borispcp 有的,謝謝老師,處理好了
第16行的網址是不是不能用了
請問要如何不傳未填的題目到line
TypeError: 無法讀取 undefined 的「values」屬性。 (第 6 行,檔案名稱:程式碼)
//程式碼開始
function myFunction(e) {
var token = "0KLLJJKL10LKKLNKL19KNKLNK92"; (已填LINE KEY)
var message = e.values[0] + "
";
var message = e.values[1] + "
";
var message = e.values[2] + "
";
var message = e.values[3] + "
";
var message = e.values[4] + "
";
var message = e.values[5] + "
";
sendLineNotify(message, token);
}
function sendLineNotify(message, token){
var options =
{
"method" : "post",
"payload" : "message=" + message,
"headers" : {"Authorization" : "Bearer " + token}
};
UrlFetchApp.fetch("notify-api.line.me/api/notify", options);
}
//程式碼結束
錯誤
已經填了好幾次表格LINE 都沒有反應
我是要做可以点餐的,有两百多个选项,如果客人点了第一个然后又点了第两百个餐,中间就空格了两百多行,有什么办法可以解决吗
大神求帮忙啊
如果只是單純餐點的選項不同,你認為使用「下拉式選單」,在選單裡面擺滿這兩百多個選項如何呢?
Lu Boris 因为每个客人不可能只点一样东西,有的同一个餐会点两份或者三份这样,所以没有办法在一个下拉列表中添加两百个餐进去
有辦法在一般的html表單使用這樣的功能ㄇ???
執行會遇這個問題怎麼解阿 : TypeError: 無法讀取 undefined 的「values」屬性。 (第 5 行,檔案名稱:程式碼)
請問有修改過程式碼嗎?
我也一樣(第 5 行) 不行
請問可以用表單定位上班打卡嗎?
不好意思,請問「定位」的意思是?
Gps定位範圍內打卡,或是公司的wifi上班打卡用
很遺憾,Google 表單沒有提供這樣的功能。
@@borispcp 感謝 大大解答
如何獲取自己ㄟ權杖
TypeError: 無法讀取 undefined 的「values」屬性。 (第 13 行,檔案名稱:程式碼)關閉
就是這個錯誤訊息, 無法執行
你會出現這個錯誤訊息應該是你直接從編輯器裡面執行 function 吧。
如果是我所說的原因,這是正常的,因為這個屬性是要用表單送出資料才會有的。
所以你試著填寫表單看看程式有沒有效果才是正確的方法。
@@borispcp這個問題困擾了我很久,
上回使用了很複雜的方式解決,沒想到是被這麼簡單的操作困住
謝謝老師
第五部測試成功,第六部一直不會傳Line 的訊息過來(谷歌表單資料確定有到excel 了)
江昱嶔 很有可能你的程式尚未允許外部連結的授權。
進入 Google Apps 編輯器裡面,直接執行一次程式(與第五部影片3:18處相同),允許授權後你再試一次看看。
不過第五部測試是成功的捏!
好吧,我在試試看
江昱嶔 我第六部沒有錄這個步驟,
是因為第五部有錄,本以為大家會自己補上這步驟,
但後來發現有不少人因為沒錄就少做了這個步驟。
所以你可以試看看這部分。
好像不行耶....改天再試試看
我也是授權的問題 """"這個應用程式未經驗證"""""
總之 我設定好了.....搞了一個小時
筆記一下,這個好像才能用,原PO影片我有試了,我個人不行,不知是哪裡操作錯誤
function doGet() {
UrlFetchApp.fetch('notify-api.line.me/api/notify',{
'headers':{ 'Authorization': 'Bearer ' + '權杖' },
'method': 'post',
'payload': { 'message': "現在時間:"+Date()}
});
}