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

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

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

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

Q&A

1回答

1082閲覧

Goole Apps Script GoogleフォームからLINEへ通知  質問にある日付表示を変更したい

S-Eriko

総合スコア0

Google Apps Script

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

0グッド

0クリップ

投稿2021/07/08 04:14

前提・実現したいこと

Googleフォームで入力した回答をLINE通知できるようにしたいです。
下記のコードだとLINE表示で、質問3の稼働時間の項目が「Sat Dec 30 1899 22:00:00 GMT 0900 (日本標準時)」と表示されてしまいます。

下記のようにLINEに表示されてほしいのですが、どのようなコードになるかご教授お願い致します。
(5:00稼働したってことがわかればと思ってます)

[Googleフォーム]
■タイムスタンプ
21/07/08(Thu) 12:01:28
■名前
山田花子
■稼働時間
05:00
■アポ件数
1
■業務報告
test

現コード

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

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

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

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

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

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

itagagaki

2021/07/08 11:44

フォームで稼働時間は時刻か何かにしているのですか? 記述式ではダメなのですか?
S-Eriko

2021/07/08 19:11

フォームで「経過時間」で登録しています。できればこのまま通したいのですが、記述式にするしか方法がないのでしょうか。
itagagaki

2021/07/09 00:09

なるほど。「経過時間」という設定があるのは知りませんでした。 だけど、あれ?スクリプトではフォームではなくスプレッドシートからデータを取得していますね。 フォームのデータをスプレッドシートに置いていて、そこから取得しているんですか? フォームのセルを介したことで「時間」が「時刻」と認識されてしまい問題の状況になっているのでは? スプレッドシートを経由する理由は何ですか?
S-Eriko

2021/07/09 00:23

フォームのセルを介したことで「時間」が「時刻」と認識されてしまい問題の状況になっているのでは? →そうかもしれません! スプレッドシートを介さずとも設定できるのならそれでもかまわないです。 ただスプレッドシートで実績も管理する必要があるので、Googleフォーム登録→スプレッドシート反映&LINE通知 の流れが求めてるものになります。
guest

回答1

0

質問では稼働時間の例が05:00なのに「Sat Dec 30 1899 22:00:00 GMT 0900 (日本標準時)」と表示されるとありますが、その場合は「Sat Dec 30 1899 05:00:00 GMT 0900 (日本標準時)」ではないですか?

推測ですが、フォームの経過時間のデータをスプレッドシートに置いてそこから取得することでそのような書式になっているのだと思います。

なので

GAS

1if(item == "稼働時間"){ 2 value = Utilities.formatDate(value,"JST","HH:mm"); 3}

とすれば良いのでは。

投稿2021/07/09 00:51

itagagaki

総合スコア8402

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

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

S-Eriko

2021/07/09 01:51

早速の回答ありがとうございます。 頂いたコードを反映し、テストで4:30でGoogleフォームを登録したところ、LINEでは21:30と表記されました(;'∀') 稼働の実働時間で入力されたそのままの数字が表記されてほしいのですが、、難しいでしょうか。。
itagagaki

2021/07/09 02:00

じゃあやっぱり5:00が22:00になっていたんですね。 どこかでタイムゾーンがおかしくなっているのかな。 スプレッドシート上の表示はどうなっていますか?
S-Eriko

2021/07/10 02:26

度々の回答ありがとうございます!!!スプレッドシート上では5:00と表示されておりました、、LINEだけ表示が変化されてる状態ですね。。
itagagaki

2021/07/10 03:58

value = Utilities.formatDate(value,"JST","HH:mm"); の下に console.log(value); を入れて実行してログを確認してみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問