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

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

新規登録して質問してみよう
ただいま回答率
85.51%
Google フォーム

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

Google Apps Script

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

Q&A

解決済

1回答

1049閲覧

スクリプトエディタ 日付の表示方法

shiyuh

総合スコア21

Google フォーム

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

Google Apps Script

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

0グッド

0クリップ

投稿2022/05/04 06:53

編集2022/05/07 17:57

以下のコードを使って、Googleフォームの解答をLINEに流すシステムを作っているのですが、
日付の解答が

Wed May 18 2022 00:00:00
GMT 0900(日本標準時)

となってしまいます。
これを

2022年5月18日 水曜日

と表示させるにはどうしたら良いでしょうか??

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){ Utilities.formatDate(new Date(), "JST", "YYYY'年'MM'月'dd'日'"); 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())); }

イメージ説明

qnoir様へ

function GoogleFormToLine() { var sheet = SpreadsheetApp.openByUrl("スプレッドシートの共有よりリンクのコピーして貼り付けてます").getSheetByName("フォームの回答 5"); 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 == "レッスン日") { //「質問3」は例。実際の質問のタイトルに変えること。 value = getDateString(value); } if (item == "タイムスタンプ") { value = Utilities.formatDate(value, "JST", "yy/MM/dd(E) HH:mm:ss"); } message += "\n■" + item + "\n" + value; } SendToLine(message); } function getDateString(date) { if (Object.prototype.toString.call(date) !== '[object Date]') { console.log(`日付ではないオブジェクト[${date}]が渡されました。`); return ''; } var w = date.getDay(); var weekname = ['日', '月', '火', '水', '木', '金', '土']; return Utilities.formatDate(date, "JST", `yyyy年M月d日 ${weekname[w]}曜日`); }

イメージ説明

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

たとえば、日付を変更したい質問のタイトルが「レッスン日」であるとした場合、
下記のようにします。

js

1function GoogleFormToLine() { 2 var sheet = SpreadsheetApp.openByUrl("スプレッドシートのURL").getSheetByName("フォームの回答 5"); 3 var row = sheet.getLastRow(); 4 var column = sheet.getLastColumn(); 5 var range = sheet.getDataRange(); 6 var message = ""; 7 8 for (var i = 1; i <= column; i++) { 9 var item = range.getCell(1, i).getValue(); 10 var value = range.getCell(row, i).getValue(); 11 if (item == "レッスン日") { // 実際の質問のタイトルに変えること。タイトルの先頭や末尾に空白が含まれている場合も、省略せずそのままコピーすること。 12 value = getDateString(value); 13 } 14 if (item == "タイムスタンプ") { 15 value = Utilities.formatDate(value, "JST", "yy/MM/dd(E) HH:mm:ss"); 16 } 17 message += "\n■" + item + "\n" + value; 18 } 19 SendToLine(message); 20} 21 22function getDateString(date) { 23 if (Object.prototype.toString.call(date) !== '[object Date]') { 24 console.log(`日付ではないオブジェクト[${date}]が渡されました。`); 25 return '#'; 26 } 27 var w = date.getDay(); 28 var weekname = ['日', '月', '火', '水', '木', '金', '土']; 29 return Utilities.formatDate(date, "JST", `yyyy年M月d日 ${weekname[w]}曜日`); 30} 31 32 33function SendToLine(message){ 34 Utilities.formatDate(new Date(), "JST", "YYYY'年'MM'月'dd'日'"); 35 var token = PropertiesService.getScriptProperties().getProperty('LINE_TOKEN'); 36 var op = 37 { 38 "method" : "post", 39 "Content-Type" : "application/x-www-form-urlencoded", 40 "payload": "message=" + message, 41 "headers":{"Authorization" : "Bearer " + token} 42 }; 43 var res = UrlFetchApp.fetch("https://notify-api.line.me/api/notify",op); 44 Logger.log(JSON.parse(res.getContentText())); 45}

投稿2022/05/04 09:09

編集2022/05/07 03:33
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shiyuh

2022/05/06 05:44

ご回答いただきありがとうございます!! 早速試したところ、日付の表示形式は変わったのですが、曜日の表示が出ません。 こちらはどのように対処したらよいでしょうか。。。
退会済みユーザー

退会済みユーザー

2022/05/06 06:08

すみませんが、下記確認お願いします。 ・念の為に聞くのですが、フォームを送信しても曜日が表示されない、という理解でよろしいですよね? (エディタから実行しても表示されないのは仕様です) ・エディタのログ(エディタの左に並んでいるアイコンのうち、上から3番目あたりの、実行可能数のアイコン)に何かエラーが表示されていませんか?もし何かエラーのようなものが表示されているのであれば、そのログ表示内容を教えて下さい。 ・フォームの質問がうまく設定できていない(フォームの質問の文や種類が、コードに正しく反映されていない)可能性があります。 フォームのうち、曜日を表示させたい質問の部分がわかる画像キャプチャを載せていただけないでしょうか?
shiyuh

2022/05/06 12:48

フォームを送信しても表示されないと言う認識で間違いございません。 実行可能数アイコンでのエラー表示文化以下の通りです。 フォームの画像は質問大元に再添付いたしました。 2022/05/06 21:42:18 エラー TypeError: Cannot read property 'getLastRow' of null at GoogleFormToLine(無題:3:19)
退会済みユーザー

退会済みユーザー

2022/05/06 13:21

「Cannot read property 'getLastRow' of null」ということは、その大本のsheet が nullになっているということだと思います。 何らかの要因で、フォームの回答を蓄積しているスプレッドシートが取得できていない可能性が考えられます。 対策として ・var sheet = SpreadsheetApp.getActiveSheet(); を var sheet = SpreadsheetApp.openByUrl("シートのURL").getSheetByName("シートのタブ名"); (シートのURLとシートのタブ名は実際の名前に変えてください) というように直接シートを指定してみるとよいかもしれません。
shiyuh

2022/05/07 02:46

ご教示いただいた通りやってみたのですが、エラーから抜け出せず、自動返信LINEの内容も曜日が記載されないままです。 現状のコードと、実行ログのエラー内容大元の質問に追記いたしました。 解決方法あればご教示いただけますでしょうか、、、!
退会済みユーザー

退会済みユーザー

2022/05/07 03:32

コードを修正しました(元の質問にあったsendToLineを追加)
shiyuh

2022/05/07 03:56

ありがとうございます!!大成功です!! 思い通りのものができました!!大変感謝しております!!!! 最後に一つご質問なのですが、GASには制限があると伺っておりまして、 トリガー数の制限が20とのことなのですが、 今完成したこのシステムの稼働は1日に20回までしかできないと言う認識でしょうか??
退会済みユーザー

退会済みユーザー

2022/05/07 04:23 編集

このシステム自体は1日に20回を超えて実行できると思います。 「トリガー数の制限が20個」というのは、1つのトリガーの1日当たりの起動回数上限が20回という意味ではなく、 1ユーザーあたりで同時に有効化できるトリガーの数が20個という意味です。 トリガーの設置個数が全ファイルで20個を超えると、古いトリガーから無効になります。 したがって、今回設置したトリガーよりも後に、別のファイルに新しくトリガーを20個以上設置しない限り、今回のトリガーは生き続けると思います。
shiyuh

2022/05/07 08:37

なるほど!安心しました! 何から何までお力添え頂きありがとうございます。!! 今回本当に助かりました!! またご縁があれば、質問にご回答いただければ嬉しいです!!
退会済みユーザー

退会済みユーザー

2022/05/07 08:57

コメントありがとうございます。解決してよかったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問