より良いエンジニアを目指して

記事を頻繁に書き直す性格なのでごめんなさい。

Google Apps Scriptでスプレッドシートの数値の書式を設定する

現象

仕事でGASを使ったアプリを開発していると、テスト中に

あれ? 数値のはずが、日付になってますよ!

という報告が。

原因

日付で代入したセルに数値で上書きすると、スプレッドシートが数値を頑張って日付で表示しようとするようです。

// 関数を実行するメニューを追加
function onOpen() {
  var ui = SpreadsheetApp.getUi();
  var menu = ui.createMenu('スクリプト実行');
  menu.addItem('テスト', 'myFunction');
  menu.addToUi();
}
function myFunction() {
  var sheet=SpreadsheetApp.getActiveSheet();
  sheet.getRange(1,1).setValue(new Date());
  // 日付を代入したセルに数値で上書き
  sheet.getRange(1,1).setValue(12345);
}

f:id:rimever:20200222134752p:plain
12345が日付で表示されてしまった

対処法

そういうときのためにセルの書式をコントロールする関数が用意されています。

developers.google.com

// 関数を実行するメニューを追加
function onOpen() {
  var ui = SpreadsheetApp.getUi();
  var menu = ui.createMenu('スクリプト実行');
  menu.addItem('テスト', 'myFunction');
  menu.addToUi();
}
function myFunction() {
  var sheet=SpreadsheetApp.getActiveSheet();
  sheet.getRange(1,1).setValue(new Date());
  // 日付を代入したセルに数値で上書き
  sheet.getRange(1,1).setValue(12345);
  // 書式を設定
  sheet.getRange(1,1).setNumberFormat("0");
}

f:id:rimever:20200222135318p:plain
できた!

使える表示形式

覚えてられないのでスプレッドシートのメニューから確認すると良さそうです。

f:id:rimever:20200222135135p:plain

f:id:rimever:20200222135152p:plain

参考記事

blogs.kaizen-cloud.jp