
Googleフォームの回答が入るとLINEに通知が来る設定をしています。
Googleフォームに回答が入力されると、
LINEに通知が来るようなスクリプトをネットを参考に作成しました。
テスト用のGoogleフォームとLINEグループでは通知が来たのに、
本番用のグループでは通知が来ませんでした。
コードは、テスト用のGASを丸々コピーして、TOKENはしっかりと本番用のもので設定しているのにも関わらずです。
発生している問題・エラーメッセージ
本番用のGASで確認したところ、
Exception: パラメータ(String,String,String)が Utilities.formatDate のメソッドのシグネチャと一致しません。(行 12、ファイル「コード」)
と表示されました。
該当のソースコード
コードは以下の通りです。
function GoogleFormToLine(){ var sheet = SpreadsheetApp.getActiveSheet(); var row = sheet.getLastRow(); var column = sheet.getLastColumn(); var range = sheet.getDataRange(); var message = ""; for(var i=1;i<=column;i++){ var item = range.getCell(1, i).getValue(); var value = range.getCell(row, i).getValue(); if(item == "タイムスタンプ"){ value = Utilities.formatDate(value,"JST","yy/MM/dd(E) hh:mm:ss"); } if(item == "クライアントからの連絡日を記入してください。"){ value = Utilities.formatDate(value,"JST","yy/MM/dd(E)"); } if(item == "第1候補日を入力してください。"){ value = Utilities.formatDate(value,"JST","yy/MM/dd(E)"); } if(item == "第2候補日を入力してください。"){ value = Utilities.formatDate(value,"JST","yy/MM/dd(E)"); } if(item == "第3候補日を入力してください。"){ value = Utilities.formatDate(value,"JST","yy/MM/dd(E)"); } if(item == "第4候補日を入力してください。"){ value = Utilities.formatDate(value,"JST","yy/MM/dd(E)"); } if(item == "第5候補日を入力してください。"){ value = Utilities.formatDate(value,"JST","yy/MM/dd(E)"); } message += "\n■"+item+"\n"+value+"\n"; } SendToLine(message); } function SendToLine(message){ var token = PropertiesService.getScriptProperties().getProperty('LINE_TOKEN'); var op = { "method" : "post", "Content-Type" : "application/x-www-form-urlencoded", "payload": "message=" + message, "headers":{"Authorization" : "Bearer " + token} }; var res = UrlFetchApp.fetch("https://notify-api.line.me/api/notify",op); Logger.log(JSON.parse(res.getContentText())); }
至急、回答いただけますと幸いです。
よろしくお願いいたします。

データの内容を確認したいです。
エラーが発生しているスクリプトで、
11行目の
if(item == "タイムスタンプ"){
の直後に
console.log("row="+row);
console.log("value="+value);
console.log("value type = "+Object.prototype.toString.call(value));
の3行を挿入して実行したとき、エラーの前にどのようなログ出力がされますか?書いてください。
ログは出力されず、「Exception: パラメータ(String,String,String)が Utilities.formatDate のメソッドのシグネチャと一致しません。(行 15、ファイル「コード」)」というエラーが表示されました。

「行 15」ということから、エラーの発生位置が質問文記載の行(11行目)から変わってますね。
11行目はエラーなく処理されているようです。(このためログにエラー以外の表示何も表示されなくなっています)
11行目の
if(item == "タイムスタンプ"){
の直後ではなく、11行目の「直前」に
console.log("row="+row);
console.log("value="+value);
console.log("value type = "+Object.prototype.toString.call(value));
を入れて実行した場合はログにどう表示されるでしょうか?
直前に追加しても先ほどと同じく、「Exception: パラメータ(String,String,String)が Utilities.formatDate のメソッドのシグネチャと一致しません。(行 15、ファイル「コード」)」というエラーが表示されました。
ログは表示されていないと思います。
表示ダブ>ログを確認したところ、以下の表示がありました。
[22-05-15 21:00:25:281 JST] row=115
[22-05-15 21:00:25:283 JST] value=
[22-05-15 21:00:25:285 JST] value type = [object String]
[22-05-15 21:00:25:304 JST] Exception: パラメータ(String,String,String)が Utilities.formatDate のメソッドのシグネチャと一致しません。
at GoogleFormToLine(コード:15:23)

「value=」ということは、スプレッドシートの値が空白だったということになります。
15行目は「クライアントからの連絡日を記入してください。」の回答が入るところになりますが、
フォームでの回答時に連絡日を記入せず空白で回答した可能性があります。
クライアントからの連絡日は必須入力なので、空白で回答することはできません。
また入力形式も、フォームのの入力形式が”日付”になっているので、形式が異なるということもありません。
テストのGoogleフォームとスプレッドとGASではできたのに、本番だけエラーが出てしまうのも謎なんです。
日付指定を無くせば、エラーなく処理されるのでしょうか?

テスト用ではうまくいっているとのことだったので可能性からは除外していたんですが、
本番用の方は、「フォーム送信時」のトリガーが発動した時点で、
スプレッドシートの末尾行のデータが空白の状態のままスクリプトの処理が走ってしまっている可能性があります。
(そして処理が終わった後でスプレッドシートの末尾行にデータが追記されている、ということになります)
そのような状態でもデータを取得できるコードを書いているのでしばらくお待ちください。
