스프레드 시트에 작성된 날짜가 '표시 형식'에 따라 GAS에서 유형이 변경되는 조사

(2020/03/21 추가)
2020년 2월에 GAS에서 V8 런타임을 사용할 수 있습니다. 이것에 의해 ECMAScript에 대응을 한 것 같습니다. 그때까지는 Rhino 런타임이었다고합니다. 이 기사를 게시했을 때는 Rhino 런타임이었지만, 아래의 기사는 V8 런타임에서도 같은 결과가 되었습니다.

아래와 같은 스프레드시트가 있으며 열에 따라 '표시 형식'이 다릅니다.


function main(){
  const sheet   = SpreadsheetApp.getActiveSheet();

  const jidou   = sheet.getRange('A2').getValue();
  const hiduke  = sheet.getRange('B2').getValue();
  const nichiji = sheet.getRange('C2').getValue();
  const nashi   = sheet.getRange('D2').getValue();

  // typeofで判定
  Logger.log(typeof jidou); // -> object
  Logger.log(typeof hiduke); // -> object
  Logger.log(typeof nichiji); // -> object
  Logger.log(typeof nashi); // -> string

  // Object.prototype.toString.call()で判定
  Logger.log(Object.prototype.toString.call(jidou)); // -> [object Date]
  Logger.log(Object.prototype.toString.call(hiduke)); // -> [object Date]
  Logger.log(Object.prototype.toString.call(nichiji)); // -> [object Date]
  Logger.log(Object.prototype.toString.call(nashi)); // -> [object String]
}

표시 형식이 「서식 없음 텍스트」라면, GAS안에서는 String가 되었습니다.
GAS측에서 Date 오브젝트로서 취급하고 있는 경우, 스프레드시트측의 표시 형식을 만지면 곤란하게 될지도?

좋은 웹페이지 즐겨찾기