19
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

IDOM EngineerAdvent Calendar 2017

Day 4

GAS スプレッドシートで意図した日時にならない?!そんな時はタイムゾーンの設定が必要です!

Last updated at Posted at 2017-12-03

自分でスプレッドシートを新規作成した場合は大体問題にならないかと思いますが、他人が作ったエクセルをスプレッドシートとして開き、それに対してプロジェクト(スクリプトエディタ)でスクリプトを書いた場合に、問題は起こるかもしれません。。(私はこれでハマりました)

サンプル

以下、「A1」のセルに現日時を書き込み、その隣のセルに時を書き込む処理。

function myFunction() {
  var range = SpreadsheetApp.getActiveSheet().getRange('A1');
  range.setValue(new Date);
  
  var date = range.getValue();
  range.offset(0, 1).setValue(date.getHours());
}

スプレッドシートのタイムゾーンと、プロジェクトのタイムゾーンが一致していれば、何も問題ありません。
「A1」のセルに書き込まれた日時が「2017/12/03 8:03:16」だとすると、その隣は「8」になります。

ところが、スプレッドシートのタイムゾーンと、プロジェクトのタイムゾーンが不一致だと当たり前ですが上記の通りにはなりません。
例えば、スプレッドシートのタイムゾーンが「(GMT+08:00)香港」で、プロジェクトのタイムゾーンが「(GMT+09:00)東京」の場合、「A1」のセルに書き込まれた日時が「2017/12/03 8:03:16」だとすると、その隣は「9」になります。

タイムゾーンを設定するには

例として日本時間を設定する場合。

スプレッドシート

  1. 画面上部のメニューバーから「ファイル」>「スプレッドシートの設定」を選択
  2. 「全般」タブの「タイムゾーン」の項目を「(GMT+09:00)東京」に設定
スプレッドシートの設定

プロジェクト

  1. 画面上部のメニューバーから「ファイル」>「プロジェクトのプロパティ」を選択
  2. 「情報」タブの「タイムゾーン」の項目を「(GMT+09:00)東京」に設定
プロジェクトのプロパティ

以上になります。

19
12
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?