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

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

新規登録して質問してみよう
ただいま回答率
86.02%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google Apps Script

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

Q&A

解決済

Googleフォームの回答内容をLINEに通知されないエラー

pechan
pechan

総合スコア1

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google Apps Script

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

1回答

0グッド

0クリップ

321閲覧

投稿2022/11/13 02:48

編集2022/11/13 10:27

前提

googleフォームの回答内容をLINEに通知するシステムに関するご質問です。
通常に作動していたのですが、googleフォームの回答がLINEに1週間前ほどから通知が来なくなってしまいました。当方、以下のサイトを参考に作成しました。

https://fullnoteblog.com/googleform-line/

実現したいこと

LINEに通知が届くようにしたいです。

試したこと

=ISTEXT関数を使い、タイムスタンプが文字列になってないか確認したところ「false」と出ております。

発生している問題・エラーメッセージ

エラーメッセージ Exception: The parameters (String,String,String) don't match the method signature for Utilities.formatDate. GoogleFormToLine @ コード.gs: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");  }  message += "\n"+item+"\n"+value;  } 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ページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

2022/11/13 04:37依頼された後にこの質問は修正されています

こちらの質問が他のユーザーから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました。

y_waiwai

2022/11/13 02:51

コードを提示しよう
pechan

2022/11/13 03:08

お返事ありがとうございます。街頭のソースコードに記載しているのですが、こちらではないでしょうか??非エンジニアのため、よく理解してもらず申し訳ございません。 よろしくお願いします。
Cocode

2022/11/13 03:54

タイムスタンプが おそらく以前はDate型だったんですけど、 現在はただの文字列になってしまっているみたいですね。 スプレッドシートのタイムスタンプの列、何か変に触ってしまいましたか?
pechan

2022/11/13 06:59

お返事ありがとうございます。仰せの通りタイムスタンプの列に時間を1度手入力してしまいました。元に戻す方法などはございますでしょうか??

回答1

0

ベストアンサー

不具合の原因

javascript

1Utilities.formatDate(date, timeZone, format)

↑の第一引数dateには日付型(Date型)という型の値をいれなければならないのに、ただの文字列をいれてしまっている。

仰せの通りタイムスタンプの列に時間を1度手入力してしまいました。

手入力して、その入力内容がよろしくなかったので、日付型だったものがただの文字列になってしまったため。

修正方法

修正しなければならないセルの数が少ないようであれば、

  • 全部手入力・半角英数字で、
  • 2022/11/13 16:32:22とか、入力してみてください。

そうすると日付型になります。


※追記
質問者様は↑でもうまくいかなかったとのことで、=DATE(2022,11,13)+TIME(16,32,22)といったふうに入力していただいたらうまくいきました。


日本語で「2022年11月13日 16:32」みたいに表示させたい場合は、そこから表示形式を変更できます。

修正しなければならないセルの数が多い場合は、全て手入力ですると大変だと思うので、ご連絡ください。

投稿2022/11/13 07:35

編集2022/11/15 12:22
Cocode

総合スコア2245

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

pechan

2022/11/13 10:34 編集

丁寧にご記載いただきありがとうございます。 該当する箇所に手入力したのですが、同じエラーになってしまいます。 =ISTEXT関数で検証しましたが、falseとなり文字列がなさそうです..... もしお知恵お借りできれうば嬉しいです。
Cocode

2022/11/13 14:46

=DATE(2022,11,14)+TIME(23,54,1) ↑こんな感じで入力してみるのはいかがでしょうか?
Cocode

2022/11/13 15:12 編集

あとは、 if(item == "タイムスタンプ"){   console.log(value, typeof value);   value = Utilities.formatDate(value,"JST","yy/MM/dd(E) HH:mm:ss"); } valueを表示させてみて、何が該当するのか、そしてその型を確認してみてください。 結果が↓みたいな感じでしたら正解です。 Mon Nov 14 2022 23:54:01 GMT+0900 (Japan Standard Time) 'object'
pechan

2022/11/15 01:14

ありがとうございました。いただきました内容にてエラーは改善が出来ました。私の拙い内容に関してご丁寧にお返事いただけたおかげでエラーについて改善が出来ました。ご対応ありがとうございます。
Cocode

2022/11/15 12:20

解決してよかったです〜〜!一応(今後このページを参考にするかもしれない方のために)回答を更新しておきますね!

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

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

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google Apps Script

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