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

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

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

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

Google Apps Script

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

Q&A

解決済

1回答

2664閲覧

GASのセルに、setHours()で時間を変更した戻り値を、時間形式で表示したい

halmichi

総合スコア12

Google スプレッドシート

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

Google Apps Script

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

0グッド

0クリップ

投稿2020/07/26 02:37

前提・実現したいこと

GASのスプレッドシートに入力されている日付データをsetHours(),setminutes()等で変更した後、別のセルに入力して、時間と時刻のみを表示したいです。別の部分で使うことがあるので、データとしては日付全体を持たせておきたいです。

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

上記メソッドの戻り値が「1970年1月1日00:00:00UTCから設定した日時までの経過ミリ秒数」であるせいか、setValue()で入力しようとすると
数値として入力されてしまいます。

該当のソースコード

Googole Apps Script
var dt = sheet.getRange(1,1).getValue(); //ここで2020/07/01を取得 sheet.getRange(3, 1).setNumberFormat("h:mm"); //入力予定のセルに、日付が入力されたら 時と分のみ表示させるようにする dt = dt.setHours(2) //この時点で変数が数値になってしまう sheet.getRange(3, 1).setValue(dt); //表示されたものも数値になっている

試したこと

1970年1月1日00:00:00UTCから設定した日時までの経過ミリ秒数から、日付に直すメソッドがあるか検索してみましたが見つけられませんでした。

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

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

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

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

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

guest

回答1

0

ベストアンサー

setHoursで得られるミリ秒単位の数値をdtに代入してはいけません(それは単なる整数です)。setHoutsを実行するだけDateクラスのオブジェクトdtの内容が変更されます。

Diff

1- dt = dt.setHours(2) 2+ dt.setHours(2);

投稿2020/07/26 02:54

編集2020/07/26 02:55
Daregada

総合スコア11990

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

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

halmichi

2020/07/26 03:10

丸一日悩んだ問題がこんなあっさり解決できるとは…。 本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問