公式資料を参照して構成した手順です。本記事の操作・コードの実行は未確認です。小さな入力例で期待結果を確かめてから利用してください。
できあがるもの
閲覧用は原本のコピーとなり、見出しが太字・白文字、金額が1,200と800、日付がyyyy/mm/ddで表示されます。原本の書式は変わりません。
始める前に
- ブラウザ版Googleスプレッドシートの編集権限と紐付きApps Script
- コピーした検証用ファイルで実行。Apps ScriptはV8ランタイムを利用
- 「売上」は見出し1行のA:C、1000行以内、C列は数値金額
- 出力名「閲覧用」は未使用
入力例
売上!A1:C3は「日付,商品,金額」「2026/10/01,ノート,1200」「2026/10/02,ペン,800」。A列は日付型です。
手順
- 検証用コピーを作ります。原本の表示形式や列幅に依存した別の帳票がないか確認し、この例は複製先にだけ書式を設定することを把握します。
- 以下をスクリプトへ貼り付けて保存します。独立した例なので、ほかの記事の同名関数があるプロジェクトには混ぜません。 /** @OnlyCurrentDoc */ function formatReport() { const ss=SpreadsheetApp.getActive(), s=ss.getSheetByName('売上'); if(!s || ss.getSheetByName('閲覧用')) throw Error('シートを確認'); const n=s.getLastRow(); if(n<2 || n>1000 || s.getLastColumn()!==3) throw Error('3列の表が必要'); const out=s.copyTo(ss).setName('閲覧用'); out.setFrozenRows(1); out.getRange('A1:C1').setBackground('#173f4f').setFontColor('#ffffff').setFontWeight('bold'); out.getRange(2,1,n-1,1).setNumberFormat('yyyy/mm/dd'); out.getRange(2,3,n-1,1).setNumberFormat('#,##0'); out.autoResizeColumns(1,3); }
- formatReportを手動実行して権限を確認します。閲覧用に濃色の見出しができ、下へスクロールしても1行目が固定されるかを確認してください。
- 原本と閲覧用を比較し、C2の値がどちらも1200であることを確認します。列幅は最長の内容に依存するため、長い説明文を含めるなら必要に応じて複製先で幅を調整します。
期待結果と照合する
閲覧用は原本のコピーとなり、見出しが太字・白文字、金額が1,200と800、日付がyyyy/mm/ddで表示されます。原本の書式は変わりません。
まずこの入力例で確認し、件数や値が一致しているかを見ます。完了表示だけで判断せず、重複・空欄・対象外データも残っていないか確認してください。
うまくいかないとき
- コピーには数式も含まれます。確定時点の値を保存する用途なら、別の値控え手順を使います。
- 書式コピー後も共有権限はファイル単位です。閲覧用という名前で編集権限が変わるわけではありません。
止める・元に戻す
閲覧用シートだけを削除します。原本に書式変更はなく、formatReport関数を消せば元の運用へ戻せます。
公式資料・対応範囲
参照日:2026-10-17。公式資料の一般的な機能説明と、本記事固有の入力例の実行検証は別です。実務での短縮時間や効果は未計測です。