現象
仕事で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); }
対処法
そういうときのためにセルの書式をコントロールする関数が用意されています。
// 関数を実行するメニューを追加 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"); }
使える表示形式
覚えてられないのでスプレッドシートのメニューから確認すると良さそうです。