[GAS] Spreadsheet의 셀에 입력된 「날짜・시간」을 GAS로 취급할 때의 데이터형

GoogleAppsScript를 사용해 스프레드시트에서의 작업을 효율화·자동화하려고 생각했을 때 피해서 통과할 수 없는 것은 일자의 취급. 예를 들면 「어느 셀에 쓰여진 날짜와 현재의 날짜를 비교해, 3일 이내라면, 어느 처리를 행한다」같다.

그리고 스프레드 시트 측에는 「표시 형식」을 설정할 수 있지 않습니까. 이 표시 형식의 차이에 의해 「날짜・시각이 들어간 셀」로부터 취해 온 값이 GAS의 코드중에서 무엇이 되는지 한번 조사했습니다.

실험



샘플 스프레드시트



1행째는 어느 「표시 형식」을 지정했는지, 입니다.
기본값 = 표시 형식에 대해 아무 것도 설정하지 않은 상태



샘플 코드


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 )

  • 실무 중에서는 「스프레드 시트로 날짜가 들어가는 셀은 (서식 없음 텍스트는 아니고) 일자/시각을 표현할 수 있는 표시 형식을 설정해 둔다」가 좋다고 생각합니다.

    좋은 웹페이지 즐겨찾기