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

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

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

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

Q&A

解決済

2回答

762閲覧

GASでgoogleフォームからLINEに通知、月日の表示を変更したい

MARIPE

総合スコア1

Google Apps Script

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

0グッド

0クリップ

投稿2022/02/20 10:05

編集2022/02/20 10:30

プログラミングのことが何も分からない中で、試行錯誤しています。
GASとLINEトークンを利用し、
googleフォームで回答された内容をLINEに送信しようとしています。

コードを調べ、コピー&ペーストし自分用に少し内容を変更しました。


< LINEに送付される内容 現在 >

[HOSTEL_checkin]
■月日:Sun Feb 20 2022 17:43:06 GMT 0900 (日本標準時)
■氏名:Mari Kotani
■人数:2人
■所在:東京
■Name:
■Number:
■Country:


が、■月日の表示がわかりにくいので、

<現在>
Sun Feb 20 2022 17:43:06 GMT 0900 (日本標準時)

<表示したい>
2022年2月20日(日)

に表示したいと思っています。
以下が現在のコードです。
これをどのように変更をすれば、月日の表示を上記のようにできるのでしょうか。


< コード 現在 >

function checkUpdate(){
var mySheet = SpreadsheetApp.getActiveSheet(); //シートを取得
var myCell = mySheet.getActiveCell(); //アクティブセルを取得
var row = myCell.getRow();
var q0 = mySheet.getRange(row, 1).getValue(); //タイムスタンプ こちらが問題の箇所です。
var q1 = mySheet.getRange(row, 3).getValue();
var q2 = mySheet.getRange(row, 6).getValue();
var q3 = mySheet.getRange(row, 11).getValue();
var q4 = mySheet.getRange(row, 33).getValue();
var q5 = mySheet.getRange(row, 28).getValue();
var q6 = mySheet.getRange(row, 27).getValue();
var message = "\n■月日:" + q0 + "\n■氏名:" + q1 + "\n■人数:" + q2 + "人\n■所在:" + q3 + "\n■Name:" + q4 + "\n■Number:" + q6 + "\n■Country:" + q5;
sendLine(message);
}

function sendLine(msg){
var token = "tAK9tzBT7W2xGyCJfBehYPQC6ZeCSfM8wXKBDzzBzFT";

var options = {
"method": "post",
"Content-Type" : "application/x-www-form-urlencoded",
"payload": "message=" + msg,
"headers":{"Authorization" : "Bearer " + token}
};
UrlFetchApp.fetch("https://notify-api.line.me/api/notify",options);
}


他で調べてみると、月日の表示方法の変更は、

Utilities.formatDate(value,"JST","yy/MM/dd(E)");

でいけるとうことまでは分かったのですが、それをどのようにすれば、実際の表示が変わるのかが分かりません。

初心者の初心者なので、可能であれば、簡単な変更で解決できればと思っています。

どうぞよろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

とりあえず

GAS

1let q0f = Utilities.formatDate(q0,"JST","yyyy年M月d日(E)");

曜日も日本語にしたければ

GAS

1const arrayDay = ['日', '月', '火', '水', '木', '金', '土']; 2let q0f = Utilities.formatDate(q0,"JST","yyyy年M月d日(") + arrayDay[q0.getDay()] + ")";

投稿2022/02/20 10:44

編集2022/02/20 10:46
itagagaki

総合スコア8402

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

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

MARIPE

2022/02/20 15:50

クイックレスポンスありがとうございます。 助かります。 let q0f = 〜 はどこに挿入したらいいのでしょうか。 またq0fができたことから、 <現状> var message = "\n■月日:" + q0 〜  は <変更> var message = "\n■月日:" + q0f 〜 に変更すれば反映されるのでしょうか? 試しに色々やってみますが、エラーになってしまいます。 以下のような内容が出ています。 --------- ブレークポイントが設定されていません デバッグを開始するには、プロジェクトに少なくとも 1 つのブレークポイントまたは「debugger」ステートメントを追加してください。 --------- お手数をおかけいたしますが、再度ご教授いただけると助かります。 よろしくお願いいたします。
MARIPE

2022/02/20 15:54

エラー表示が間違えていました。 ------ エラー Exception: The parameters (String,String,String) don't match the method signature for Utilities.formatDate. ------ と表示されています。
itagagaki

2022/02/20 16:36

> var message = "\n■月日:" + q0f 〜 > に変更すれば反映されるのでしょうか? そうです。 q0 のままでやるなら let q0 = mySheet.getRange(row, 1).getValue(); console.log(q0); const arrayDay = ['日', '月', '火', '水', '木', '金', '土']; q0 = Utilities.formatDate(q0,"JST","yyyy年M月d日(") + arrayDay[q0.getDay()] + ")"; console.log(q0);
MARIPE

2022/03/08 10:40

ありがとうございます。 あれから教えていただいた分でやってみたのですが、エラーになってしまいました。 なにがどうダメでエラーになるのか分からずでしたが、試行錯誤していく中でなんとか解決しました。 全くのど素人で、ただ、小さい会社の中で、普段の業務を少しでも自動化したいという思いから 興味本位でGASをやってみたのが今回でしたが、これを気に本を買ってちょっと勉強してみようと思います。 functionの意味もわからない私に、ご丁寧に教えていただき、ありがとうございました!
guest

0

ベストアンサー

下記のように直します。

function checkUpdate(){ (略) var weekdays = ['日', '月', '火', '水', '木', '金', '土']; var date = mySheet.getRange(row, 1).getValue(); var q0 = Utilities.formatDate(date, 'Asia/Tokyo', 'yyyy年M月d日(' + weekdays[date.getDay()] +')'); 以下略

  
※曜日が正しく表示されない場合は、下図のように
①スクリプトエディタの左の歯車マークをクリックして、②appsscript.json~を表示するにチェックを入れ、
appsscript.json内のtimeZoneを「Asia/Tokyo」に変更して保存してください。

イメージ説明
イメージ説明

投稿2022/02/20 10:39

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

MARIPE

2022/02/20 15:42

クイックレスポンスをありがとうございます。 さっそくご回答いただいたコードを挿入しようとしたのですが、どこに挿入したら良いのでしょうか。 function checkUpdate(){ var mySheet = SpreadsheetApp.getActiveSheet(); //シートを取得 var myCell = mySheet.getActiveCell(); //アクティブセルを取得 var row = myCell.getRow(); この後に入れてみたのですが、エラーになりました。 曜日が正しく表示されない場合については、対応できました。ありがとうございます!
退会済みユーザー

退会済みユーザー

2022/02/20 22:41

插入位置はそれでよいです。 ただし、挿入後、元々の「 var q0 = mySheet.getRange(row, 1).getValue(); //タイムスタンプ こちらが問題の箇所です。 」 の一行は削除してください。
MARIPE

2022/03/08 10:48

教えていただきありがとうございます。 あれから何回かエラーと戦っているうちに、教えていただいたコードで年月日が日本語で上手く表記されました! ど素人なもので、、なにをやってエラーだったのか、なにを変えてうまくいったのかは分からないままなのですが、 function checkUpdate(){ var mySheet = SpreadsheetApp.getActiveSheet(); //シートを取得 var myCell = mySheet.getActiveCell(); //アクティブセルを取得 var row = myCell.getRow(); var weekdays = ['日', '月', '火', '水', '木', '金', '土']; var date = mySheet.getRange(row, 1).getValue(); var q0 = Utilities.formatDate(date, 'Asia/Tokyo', 'yyyy年M月d日(' + weekdays[date.getDay()] +')'); var q1 = mySheet.getRange(row, 3).getValue(); 以下省略 でスムーズにいきました。 これを気にGASの本を買って、社内のちょっとした自動化をすすめていってみようと思うようになってます。 ご丁寧にありがとうございました!
退会済みユーザー

退会済みユーザー

2022/03/08 11:05

こちらこそ、レスポンスありがとうございます。頑張って下さい。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問