ホーム > ツール・Excel・API
GASでスプレッドシートを操作する方法|AIに集計コードを書かせて検算するまで

GASは、スプレッドシートの[拡張機能]→[Apps Script]でコードを書いて実行できます。 初回は権限の承認画面が出るので、求められる操作の範囲を読み、必要な権限を確認してから許可します。 コードはAIに書かせてもよいですが、元のシートをコピーしてから実行し、結果をピボットテーブルやSUMIFで検算します。確認日:2026年10月23日。
GASを始める手順
![GASでスプレッドシートを読み書きする5ステップ。コピーを作成(元ファイルの[ファイル][コピーを作成]で検証用のファイルを用意)、入力シート名(読み取る列と結果を書き込む場所)、[拡張機能][Apps Script]でコードを記述、コードを保存(実行する関数を選んで[実行]し承認内容を確認)、別の方法で検算(正しいことを確認してから日常業務に使う)。下段に、初回はファイル全体を分け入力データを変更しない条件で試すと記載](https://rakurip.com/wp-content/uploads/2026/10/gas-spreadsheet-fig1.webp)
GASの使い方は、最初にファイル全体のコピーを作り、集計対象と出力先を決めてから、手動で実行して結果を確認するのが基本です。
GASはGoogle Apps Scriptの略で、スプレッドシートの読み書きや定型処理を自動化する仕組みです。楽天市場の店舗でできることには、取り込んだ受注表の商品別集計や、在庫確認表の更新などがあります。
- 元ファイルの[ファイル]→[コピーを作成]から、検証用のファイルを作ります。
- コピーを開き、入力シート名、読み取る列、結果を書き込む場所を確認します。
- [拡張機能]→[Apps Script]を選び、開いたエディタにコードを記述します。
- コードを保存し、実行する関数を選んで[実行]を押し、承認内容を確認します。
- 出力結果を別の方法で検算し、正しいことを確認してから日常業務に使います。
同じファイル内でタブを複製するだけでは、誤ったコードが別のタブを更新する可能性が残ります。初回はファイル全体を分け、コードにも入力データを変更しない条件を付けましょう。Google公式の操作ガイド、ファイルのコピー方法
GASでスプレッドシートを読み書きする基本命令
基本操作では、スプレッドシート、シート、セル範囲を順に指定し、値を読み取ってから結果を書き込みます。
表のss、sheet、rangeは、それぞれ取得したファイル、シート、範囲を入れる変数名です。
| 操作 | 短い記述例 | 意味 |
|---|---|---|
| ファイルを取得 | SpreadsheetApp.getActiveSpreadsheet() | 紐づくファイルを取得 |
| シートを取得 | ss.getSheetByName('受注表') | 名前で対象を固定 |
| 範囲を取得 | sheet.getRange('A2:C10') | A1形式でセルを指定 |
| 値を読み取る | range.getValues() | 行ごとの二次元配列を取得 |
| 値を書き込む | range.setValues(rows) | 二次元配列を範囲へ書き込み |
getValues()は数値、日付、文字列などを返し、空セルは空文字列として取得します。セルの行・列番号は1から始まりますが、取得した配列の先頭は[0][0]で参照します。
setValues()では、配列と書き込み先の行数・列数を一致させる必要があります。また、=で始まる値は数式として解釈されるため、商品コードなどの転記でも確認が必要です。
大量の処理では、セルごとの読み書きを繰り返さず、まとめて読み取り、計算後にまとめて書き込みます。Google公式のRangeリファレンス、処理効率の推奨事項
売上集計の前に決める列構成と集計条件
売上集計では、行の単位、金額の意味、対象条件、日付の基準を、コード作成より先に確定させます。
以下は記事用に作成した架空の列構成であり、楽天市場の正式な受注CSV仕様を示すものではありません。
| 列 | 見出し | 型と意味 |
|---|---|---|
| A | 明細ID | 文字列、商品明細を一意に識別 |
| B | 受注日時 | スプレッドシートの日時値 |
| C | 商品コード | 文字列、先頭のゼロを保持 |
| D | 数量 | 数値 |
| E | 集計対象金額 | 数量反映済みの明細金額 |
| F | 集計区分 | 「集計対象」または「除外」 |
この例ではE列を合計するため、数量を再び掛けると売上が過大になる点を、依頼文にも明記します。税込・税抜、値引き、送料などの扱いは、E列を用意する段階で決めておきます。
注文全体の請求額が商品行ごとに繰り返されている表では、その列の単純合計も重複計上になります。同じ注文番号に複数の商品明細がある場合もあるため、注文番号だけで重複削除しないでください。
日別集計では、受注日と出荷日を混ぜず、スプレッドシートとスクリプトのタイムゾーンも確認します。Googleは、両者のタイムゾーンの不一致が、不具合の原因になると説明しています。Google公式のタイムゾーン説明)
日本の祝日を判定に使う
営業日だけで集計したい場合は、Googleカレンダーの祝日カレンダーを使う方法があります。パソコン版では[カレンダーを追加]→[関心のあるカレンダーを探す]→[地域限定の祝日]から日本の祝日を追加します。
GASではCalendarApp.getCalendarsByName()で、所有または登録しているカレンダーを名前で取得できます。取得したカレンダーのgetEventsForDay(日付)に予定があれば、その日を祝日として扱えます。カレンダー名は表示言語で変わるため、カレンダーの設定で確かめます。
Googleは、祝日の情報は第三者の企業の情報に基づくと説明しています。カレンダーを読む権限が承認画面に加わる点と、振替休日などの結果を一度は目で確かめる点も押さえておきます。Google公式の祝日の追加方法、CalendarAppリファレンス
AIに集計コードを書かせる頼み方
AIには、正確な列構成と集計条件を伝え、外部送信や元データの変更を行わないコードを依頼します。
依頼時は顧客情報入りの受注表を貼らず、実際と同じ型・形式を持つ架空データで構造を伝えましょう。
Google スプレッドシートに紐づくGASで、商品別・日別の金額集計を作成してください。 入力シート名は「受注データ_作業用」で、先頭行が見出し、以降は商品明細です。 A列は文字列の明細ID、B列は日時値の受注日時、C列は文字列の商品コードです。 D列は数値の数量、E列は数量反映済みの集計対象金額、F列は文字列の集計区分です。 F列が「集計対象」の行だけでE列を合計し、D列の数量は再び掛けないでください。 商品別はC列、日別はB列をAsia/Tokyoの日付でまとめ、先頭のゼロを保持してください。 重複ID、金額や日時の型違い、商品コードの空欄、未知の区分は、補正せず行番号を示してください。 現在のファイルだけを扱い、入力データの値・数式・並び順を変更しないでください。 全データを検証してから新規シートに出力し、出力名が存在する場合は停止してください。 外部通信、AIのAPI呼び出し、メール送信、共有変更、外部ライブラリは使わないでください。 トリガー作成や公開を行わず、明細をログへ出さず、
@OnlyCurrentDocを付けてください。 コード作成前に仕様と不足事項を確認し、作成後は読み書き範囲と必要な権限を説明してください。
個人情報保護委員会は、個人情報を生成AIへ入力する際、利用目的の達成に必要な範囲か確認するよう求めています。本人の同意なく入力する個人データについては、機械学習に利用しないこと等の確認も必要です。個人情報保護委員会の注意喚起
GASの承認画面で確かめる権限と外部送信
承認画面では、集計に必要な権限かを確かめ、外部通信やメール送信を求められた場合はコードを見直します。
今回のように現在のファイル内だけで集計する設計では、次の項目を確認する運用が適しています。
| 確認項目 | 判断の目安 |
|---|---|
| 実行アカウント | 店舗業務で対象ファイルを扱うアカウントか |
spreadsheets.currentonly | 現在のスプレッドシート内に限定する権限 |
spreadsheets | より広いアクセスが必要な理由を確認 |
script.external_request | 外部通信の権限であり、今回の設計では不要 |
| メール送信・共有変更 | 今回の集計では使わないため、要求理由を確認 |
| 未確認アプリの警告 | 作成元、コード、要求権限を確認して判断 |
Apps Scriptはコードから必要な権限を判定し、新しいサービスを加えると追加承認を求める場合があります。権限を個別に許可できる画面では、処理に必要な項目が未承認だとエラーになることがあります。Google公式の承認ガイド
@OnlyCurrentDocは文書へのアクセス範囲を絞る指定で、外部送信を一律に禁止する設定ではありません。UrlFetchAppは取得だけでなく送信にも使えるため、通信先と渡す内容を確認する必要があります。
POSTがなくても、GET通信のURLに情報を入れると、通信先にその情報が渡る点にも注意してください。ファイルのコピーや特定の単語の検索だけで安全とは判断せず、処理範囲全体を確かめましょう。Google公式のUrlFetchAppリファレンス
AIに書かせたコードを検算する

検算は保存した入力データから独立して作り、総合計だけでなく商品別・日別の金額と明細数まで照合します。
- 架空データで正解を手計算し、通常行、除外行、日付の境界を含めて実行します。
- 重複ID、空欄、文字列の金額も試し、異常が正常な集計に混ざらないか確認します。
- 入力データの保存用コピーから、商品別と日別のピボットテーブルを作成します。
- 商品別金額、日別金額、総合計、対象・除外の明細数をGASの結果と照合します。
- 再実行し、過去の結果への追記や二重計上、既存シートの変更がないか確認します。
- 実データでも照合し、使用コード、集計条件、実行日時、検算結果を保存します。
ピボットテーブルは、見出し付きの入力範囲を選び、[挿入]→[ピボット テーブル]から作成できます。次の設定で、値の集計方法が件数ではなくSUMになっていることも確認します。
| 設定 | 商品別の検算 | 日別の検算 |
|---|---|---|
| 行 | 商品コード | 元の日時から用意した日付だけの列 |
| 値 | 集計対象金額をSUM | 集計対象金額をSUM |
| フィルタ | 集計区分が「集計対象」 | 集計区分が「集計対象」 |
ピボットの集計セルをダブルクリックすると、対応する元データの行を別シートで確認できます。Google公式のピボットテーブル手順
SUMIFで調べる場合は、検算用シートのH列に=IF(F2="集計対象",E2,0)を入れ、必要な行まで適用します。別シートのA2に商品コードを置き、=SUMIF('検算用'!C2:C,A2,'検算用'!H2:H)で照合します。
商品コードの*や?はワイルドカードになるため、該当する場合は公式説明に沿った対応が必要です。Google公式のSUMIF説明
時刻付きの日別検算では、SUMIFSで「当日以上、翌日未満」と「集計対象」を条件にして合計します。総合計が一致しても振り分けが違う場合があるため、商品別と日別の確認を省略しないでください。Google公式のSUMIFS説明
GASのトリガーと実行時間の上限
自動実行は手動の検算後に設定し、通常の実行時間とトリガーの日次合計時間を分けて管理します。
| トリガー | 用途 | 主な条件 |
|---|---|---|
シンプルなonEdit(e) | セル編集時の入力補助 | 承認が必要なサービスに制約 |
| インストール可能な編集時 | 編集を起点にした処理 | 作成者の権限で実行 |
| 時間主導型 | 定期集計 | 実行時刻に揺れがある |
エディタの[トリガー]→[トリガーを追加]で、実行する関数とイベントの種類などを設定します。時間主導型は、午前9時の設定でも公式例では9時から10時の間に実行時刻が選ばれます。
GASやAPIによるセル更新では、編集時トリガーは動かないため、後続処理はコードから呼び出します。また、担当者の変更時には、トリガーの作成者と、そのアカウントのアクセス権限を確認します。Google公式のトリガー説明
シートのボタンから実行する
トリガーを使わずに担当者が押して実行したい場合は、シートに置いた図形や画像にスクリプトを割り当てて、ボタンとして使えます。
- [挿入]から図形描画または画像をシートに配置します。
- 配置した図形を選び、右上のメニューから[スクリプトを割り当て]を選びます。
- 実行する関数名を、かっこを付けずに入力して確定します。
Googleの説明では、この方法はスプレッドシートに紐づくスクリプトで使え、パソコンのブラウザでクリックしたときだけ実行されます。スマホのアプリで押しても実行されません。Google公式のボタン割り当て手順
| 上限の項目 | 個人向けアカウント | Google Workspace |
|---|---|---|
| 通常の実行時間 | 6分/実行 | 6分/実行 |
| カスタム関数 | 30秒/実行 | 30秒/実行 |
| トリガーの合計実行時間 | 90分/日 | 6時間/日 |
| 同時実行数/ユーザー | 30 | 30 |
| 同時実行数/スクリプト | 1,000 | 1,000 |
| トリガー数 | 20/ユーザー/スクリプト | 20/ユーザー/スクリプト |
| URL Fetch呼び出し | 20,000回/日 | 100,000回/日 |
日次クォータはユーザー単位で、最初のリクエストから24時間後にリセットされ、超過すると実行が停止します。試用アカウントには追加制限があり、有料移行後の引き上げには累計100米ドル相当以上の支払いと、到達後60日以上の経過が必要です。
上限は予告なく変更されるため、運用開始時にも公式表を確認し、実行履歴で処理時間を測ってください。Google公式のクォータ表
シンプルトリガーの実行時間は最長30秒であり、通常のスクリプトの6分とは条件が異なります。Google公式のシンプルトリガー制限
GASの実行ログと集計差額の確認方法
実行エラーは履歴から調べ、集計差額は金額の定義、対象条件、日付の順に原因を切り分けます。
手動実行直後は[実行ログ]、自動実行の成否は左側の[実行数/Executions]で確認できます。ログには処理名や件数、成否を残し、顧客情報や受注明細全体を出力しない設計にしましょう。Google公式のログ説明
| 症状 | 最初に調べる点 |
|---|---|
| 金額が大きい | 数量の二重乗算、注文金額の重複、再実行時の追記 |
| 金額が小さい | 文字列の金額、範囲漏れ、対象条件の違い |
| 商品別だけ違う | 商品コード、SKU、空白、先頭のゼロ |
| 日別だけ違う | 日時の型、時刻、タイムゾーン |
| 書き込みに失敗 | 配列と出力範囲の行数・列数 |
| 管理画面と違う | 日付基準、キャンセル、返品、税・送料・値引き |
AIに修正を頼む際は、期待値と実際の結果、架空データで再現した例を渡し、原因の説明を求めます。「数字を合わせて」だけで修正させず、仕様と入力値のどちらに原因があるかを確認してください。
よくある質問(FAQ)
導入時の疑問は、操作方法、承認、処理上限、データの扱い、検算の役割を分けると判断しやすくなります。
GASはどこから開きますか
対象のスプレッドシートを開き、上部の[拡張機能]→[Apps Script]からエディタへ進みます。ファイルに紐づくコードとして作成できるため、まずはコピーしたファイルから始めましょう。
初回の承認画面ではすべて許可しますか
要求される権限を読み、処理に必要かを確認してから許可し、不要な要求があればコードを見直します。必要な権限を許可しなかった場合は、その権限を使う処理が承認エラーになることがあります。
GASでは何行まで集計できますか
getValues()とsetValues()専用の一律の処理行数上限は、参照した公開情報では確認できません。通常の実行時間上限を踏まえ、実際のデータとコードで処理時間を測定してください。
AIに受注データをそのまま渡してもよいですか
コード作成の依頼では、列構成と架空データを使い、氏名、住所、電話番号などは入力しない運用を勧めます。AIへの入力内容の確認とは別に、生成されたGASに外部送信がないかも確かめてください。
コードが正常終了すれば集計は正しいですか
正常終了は処理が終わったことを示すため、集計条件や金額の定義が正しいかは別に確認する必要があります。元データのコピーから作ったピボットテーブルやSUMIFで、内訳と明細数まで検算してください。
店舗の「次の一手」を一緒に進めるなら
AI社員アプリ・運営代行・ECコンサルまで、現場を知るチームがワンストップで伴走します。
西尾 勝太株式会社ラクダ 代表
楽天SOY 2年連続受賞 / 楽天NATIONSリーダー店舗 / 楽天NATIONS AIエバンジェリスト
楽天市場の月商を5年で200万円→2億円に伸ばした現場の実践者。売れるECの方程式にAIを重ね、EC事業者の「次の一手」に伴走しています。
西尾勝太のブログを読む




