LoginSignup
1
1

More than 3 years have passed since last update.

[GAS] Spreadsheetのセルに入力された「日付・時刻」をGASで扱うときのデータ型

Posted at

GoogleAppsScriptを使ってスプレッドシートでの作業を効率化・自動化しようと思った時に避けて通れないのは日付の扱い。例えば「あるセルに書かれた日付と、現在の日付を比較して、3日以内だったら、ある処理をおこなう」みたいな。

そしてスプレッドシート側には「表示形式」が設定できるじゃないですか。この表示形式の違いによって「日付・時刻が入ったセル」から取ってきた値がGASのコードの中で何になるのかついて調べました。

実験

サンプルスプレッドシート

1行目はどの「表示形式」を指定したか、です。
デフォルト=表示形式について何も設定していない状態

ss.png

サンプルコード

function myFunction() {
  const sheet = SpreadsheetApp.getActive().getActiveSheet();
  const data = sheet.getRange("A2:E2").getValues()[0];

  // デフォルト
  console.log(data[0] instanceof Date); // => true

  // 日付
  console.log(data[1] instanceof Date); // => true

  // 自動
  console.log(data[2] instanceof Date); // => true

  // 日時
  console.log(data[3] instanceof Date); // => true

  // 書式なしテキスト
  console.log(data[4] instanceof Date);   // => false
  console.log(data[4] instanceof String); // => false
  console.log(typeof data[4] ); // => string
}

結果

  • 「デフォルト、日付、自動、日時」のときは Dateオブジェクト として取得されました。(はじめは「文字列」なのかなって思ってました)
  • 「書式なしテキスト」のときは string として取得されました。 (Stringオブジェクトではなく、プリミティブ型の string。 参考: Primitive (プリミティブ) - MDN Web Docs )

実務の中では「スプレッドシートで日付が入るセルは(書式なしテキストではなく)日付/時刻を表現できる表示形式を設定しておく」がいいと思います。

1
1
0

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
1
1