GoogleスプレッドシートをGAS(Google Apps Script)で操作する時、セルの数値フォーマットを一括取得したいことってあるばい? そんな時に便利なのが getNumberFormats()
メソッドさ!
今回は、この getNumberFormats()
の基本から応用まで、わかりやすく解説していくけんね!
1. getNumberFormats() ってどんなメソッド?
メソッドの概要
このメソッドを使えば、指定した範囲内の数値フォーマットや日付フォーマットを一括取得できるばい。データの整合性チェックやフォーマットの統一にも使えるけん、便利さ!
基本構文
const formats = range.getNumberFormats();
この range
には SpreadsheetApp.getActiveSheet().getRange()
で取得したセル範囲を指定すればよかばい。
返り値の形式
戻り値は二次元配列になっていて、各セルのフォーマットが String
で格納されるっちゃね。
例えば、B2からC3までの範囲を取得すると、
[
['#,##0', 'yyyy/MM/dd'],
['0.00%', 'General']
]
こんな感じで返ってくるばい。
2. getNumberFormats() の基本的な使い方
シンプルなサンプルコード
function sampleGetNumberFormats() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('データシート');
const range = sheet.getRange('B2:D5');
const formats = range.getNumberFormats();
formats.forEach((row, rowIndex) => {
row.forEach((format, colIndex) => {
console.log(`セル ${String.fromCharCode(66 + colIndex)}${rowIndex + 2}: ${format}`);
});
});
}
このコードを実行すると、セルごとのフォーマット情報がコンソールに表示されるばい。
フォーマットの具体例
フォーマット種別 | 例 | 表示 |
---|---|---|
数値 | #,##0.00 | 12,345.67 |
パーセンテージ | 0.00% | 98.76% |
日付 | yyyy/MM/dd | 2025/03/06 |
通貨 | [$¥-411]#,##0.00 | ¥12,345.67 |
3. 応用例:フォーマット整合性チェック
データのフォーマットがちゃんと統一されているか確認したい? そんな時はこのスクリプトを使えばよかばい!
function validateColumnFormats() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('売上データ');
const formatRules = {
3: 'yyyy/MM/dd',
4: '#,##0',
5: '[$¥-411]#,##0.00'
};
const range = sheet.getRange(2, 3, sheet.getLastRow() - 1, 3);
const formats = range.getNumberFormats();
formats.forEach((row, rowIndex) => {
Object.keys(formatRules).forEach(colOffset => {
const expected = formatRules[colOffset];
const actual = row[colOffset - 1];
if (actual !== expected) {
console.error(`エラー: ${String.fromCharCode(64 + 3 + parseInt(colOffset))}${rowIndex + 2} 期待:${expected} 実際:${actual}`);
}
});
});
}
このスクリプトを実行すれば、フォーマットが異なるセルを自動検出してくれるばい!
4. まとめ
getNumberFormats()
メソッドを使えば、スプレッドシートのフォーマットを一括取得して、整合性チェックやデータのフォーマット統一が簡単にできるばい!
こんな活用法を試してみて、業務の自動化をどんどん進めてみるとよかばい!
コメント