質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

受付中

[GAS] LINE通知のタイムスタンプに関してのスクリプトエラーが解決できません。至急解決したいです!

piyopiyo_3
piyopiyo_3

総合スコア6

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

2回答

0評価

0クリップ

259閲覧

投稿2022/05/15 09:53

編集2022/05/16 09:41

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())); }

至急、回答いただけますと幸いです。
よろしくお願いいたします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

qnoir

2022/05/15 10:14

データの内容を確認したいです。 エラーが発生しているスクリプトで、 11行目の   if(item == "タイムスタンプ"){ の直後に console.log("row="+row); console.log("value="+value); console.log("value type = "+Object.prototype.toString.call(value)); の3行を挿入して実行したとき、エラーの前にどのようなログ出力がされますか?書いてください。
piyopiyo_3

2022/05/15 11:00

ログは出力されず、「Exception: パラメータ(String,String,String)が Utilities.formatDate のメソッドのシグネチャと一致しません。(行 15、ファイル「コード」)」というエラーが表示されました。
qnoir

2022/05/15 11:27

「行 15」ということから、エラーの発生位置が質問文記載の行(11行目)から変わってますね。 11行目はエラーなく処理されているようです。(このためログにエラー以外の表示何も表示されなくなっています) 11行目の   if(item == "タイムスタンプ"){ の直後ではなく、11行目の「直前」に console.log("row="+row); console.log("value="+value); console.log("value type = "+Object.prototype.toString.call(value)); を入れて実行した場合はログにどう表示されるでしょうか?
piyopiyo_3

2022/05/15 12:01

直前に追加しても先ほどと同じく、「Exception: パラメータ(String,String,String)が Utilities.formatDate のメソッドのシグネチャと一致しません。(行 15、ファイル「コード」)」というエラーが表示されました。 ログは表示されていないと思います。
piyopiyo_3

2022/05/15 12:02

表示ダブ>ログを確認したところ、以下の表示がありました。 [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)
qnoir

2022/05/15 12:26 編集

「value=」ということは、スプレッドシートの値が空白だったということになります。 15行目は「クライアントからの連絡日を記入してください。」の回答が入るところになりますが、 フォームでの回答時に連絡日を記入せず空白で回答した可能性があります。
piyopiyo_3

2022/05/15 12:46 編集

クライアントからの連絡日は必須入力なので、空白で回答することはできません。 また入力形式も、フォームのの入力形式が”日付”になっているので、形式が異なるということもありません。 テストのGoogleフォームとスプレッドとGASではできたのに、本番だけエラーが出てしまうのも謎なんです。
piyopiyo_3

2022/05/15 12:52 編集

日付指定を無くせば、エラーなく処理されるのでしょうか?
qnoir

2022/05/15 13:16

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

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。