🌊
GAS・スプレッドシートにゼロ埋め数字を転記する方法
ゼロ埋めの数字(文字列)、文字列、数値の配列データを用意します。
[ [ '00001', 'yamada', 27, true ],
[ '00003', 'suzuki', 33, false ],
[ '00029', 'tanaka', 50, false ],
[ '00501', 'harada', 60, false ],
[ '00773', 'kaneko', 29, false ] ]
GASを使って配列データをスプレッドシートに転記します。
let data = [[ '00001', 'yamada', 27, true ],
[ '00003', 'suzuki', 33, false ],
[ '00029', 'tanaka', 50, false ],
[ '00501', 'harada', 60, false ],
[ '00773', 'kaneko', 29, false ]];
let ss = SpreadsheetApp.getActiveSpreadsheet();
let sheet = ss.getActiveSheet();
sheet.getRange(2, 1, data.length, data[0].length).setValues(data);
転記された結果を見ると、文字列の00001
が数字の1
に変換されてしまいます。
セル値を見ても数字になっています。
配列上では文字列としての扱いだったのが、セルに転記すると数値に自動変換されてしまうため、困ることが多々あります。
ゼロ埋め数字を文字列として表示させるには、主に2種類の方法があります。
- 計算式としてセル値を入力する。
- 書式設定をしてからセル値を入力する。
1. 計算式でセル値を入力
セル値="00001"
として入力すると、文字列としての扱いになり、頭のゼロも表示させる事が出来ます。
サンプルコード
let data0 = [[ '00001', 'yamada', 27, true ],
[ '00003', 'suzuki', 33, false ],
[ '00029', 'tanaka', 50, false ],
[ '00501', 'harada', 60, false ],
[ '00773', 'kaneko', 29, false ]];
// 配列で指定Keyを書き換える
let data = data0.map(emp => {
return Object.keys(emp).map(key => {
if (key == 0) {
return `="${emp[key]}"`;
} else {
return emp[key];
}
});
let ss = SpreadsheetApp.getActiveSpreadsheet();
let sheet = ss.getActiveSheet();
// スプレッドシートに一括書き込み
sheet.getRange(2, 1, data.length, data[0].length).setValues(data);
2. 書式設定をしてからセル値を入力する。
書式設定を行うには、対象範囲を選択して、メニューの表示形式 > 数字 > 書式なしテキスト
を選択します。
書式設定を行った箇所にゼロ埋めで数字入力すると、期待通りの表示になります。
この作業をGASで行うには、setNumberFormat(numberFormat)
で書式設定を行ってからシートに書き込みを行う手順で再現出来ます。
サンプルコード
let data = [[ '00001', 'yamada', 27, true ],
[ '00003', 'suzuki', 33, false ],
[ '00029', 'tanaka', 50, false ],
[ '00501', 'harada', 60, false ],
[ '00773', 'kaneko', 29, false ]];
let ss = SpreadsheetApp.getActiveSpreadsheet();
let sheet = ss.getActiveSheet();
// A2〜A6セルを「書式なしテキスト」に書式設定
sheet.getRange(2, 1, data.length, 1).setNumberFormat('@');
// スプレッドシートに一括書き込み
sheet.getRange(2, 1, data.length, data[0].length).setValues(data);
Discussion