スプレッドシートでスクリプトを使うための基本

最終更新日:2026年8月4日

GASとは?スプレッドシートで使えるスクリプト

今回はスプレッドシートをより便利に使用するための技術を紹介します。

スプレッドシートはGoogle社が提供する表計算ソフトで、関数を設定できたり、自分以外の人と共有できたりするので重宝します。同じく表計算ソフトのエクセルと機能や使い方が似ており比較されることが多いです。

では「Google Apps Script(GAS)」という言葉を聞いたことはあるでしょうか。GASとはスプレッドシート・ドキュメント・ドライブなどのGoogleサービスをJavaScriptで操作するための環境を指します。GASを使用するにはApps Script エディタというものを利用し、コードを記述していく必要があります。どのようなコードを書くとスプレッドシートで便利に使用できるのか、以下に紹介します。

コードを書く準備〜Apps Scriptの起動

まずはApps Scriptエディタを起動します。

⚠️ UIの変更について(2022年以降):旧メニュー「ツール → スクリプトエディタ」は「拡張機能 → Apps Script」に変更されています。以下は現在の手順です。

現在の手順:スプレッドシートを開き、上部メニューから「拡張機能」を選択 → 「Apps Script」をクリック

すると別タブでエディタが開きます。何か記録しているマクロがある場合はここに表示されます。何も登録されていない場合は「コード.gs」という項目が表示され、以下のような空の関数だけ用意されています。

function myFunction() {
  // ここに自分でコードを書いて肉付けしていきます
}

別途テキストエディタを用意したり、環境構築のために何かをインストールしたりする必要がないので大変手軽です。Apps Scriptエディタは数回のクリックで開けるので、軽い気持ちで始められるのが好印象です。これでコードを書く準備は整いました。次からは各メソッドの使い方を紹介していきます。

基本メソッド:セル操作の4大機能

① セル番地の指定(getRange)

まずはスプレッドシートの中で操作する対象となるセルがどこにあるのか、スクリプトで表現する方法を紹介します。セルの位置を指定するには getRange メソッドを使用します。

// ① セル番地を文字列で指定(例: A1)
sheet.getRange("A1")

// ② セル範囲を文字列で指定(例: A1〜C3の9セル)
sheet.getRange("A1:C3")

// ③ 行番号・列番号で指定(例: 1行目3列目 = C1)
sheet.getRange(1, 3)

// ④ 行番号・列番号・行数で指定
sheet.getRange(1, 1, 5)        // A1から5行

// ⑤ 行番号・列番号・行数・列数で指定
sheet.getRange(1, 1, 5, 3)     // A1から5行×3列

①②のセル番地にはA1やC3のように明確なセルの番地が入ります。②の場合はセル番地を2つ指定して複数セルの範囲を表します。③④⑤にある行番号と列番号にはそれぞれ当てはまる番号が入ります(例:(1,3)は1行目3列目 = C1)。

② セルの値を取得する(getValue / getValues)

セル番地の指定方法が分かったところで次は、セルの値の取得についてご説明します。

// 1つのセルの値を取得(getValue)
var sheet = SpreadsheetApp.getActiveSheet();
var value = sheet.getRange("A1").getValue();
Logger.log(value);  // A1の値をログに出力

// 複数セルの値をまとめて取得(getValues)→ 2次元配列で返る
var values = sheet.getRange("A1:A3").getValues();
// → [[A1の値], [A2の値], [A3の値]] のような配列になる
Logger.log(values);

注意点として、getValue()では1つの値しか取り出せません。範囲指定しても指定範囲の左上のセルの値しか取得できません。複数のセルの値をまとめて取得したい場合はgetValues()(複数形)を使い、2次元配列として取得します。

getValues()で取得した2次元配列は、forループで1行ずつ処理するのが基本パターンです:

// A1:B5の範囲を取得して1行ずつ処理する実用例
function processSheet() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var values = sheet.getRange("A1:B5").getValues();  // 2次元配列で取得

  for (var i = 0; i < values.length; i++) {
    var name  = values[i][0];  // A列(0列目)
    var score = values[i][1];  // B列(1列目)
    Logger.log(name + " の点数: " + score);
  }
}
// 出力例:
// 山田太郎 の点数: 85
// 鈴木花子 の点数: 92

③ セルに値を入力する(setValue / setValues)

値の取得が出来たところで、次にセルへの値の入力の仕方を説明します。

// 1つのセルに値を入力(setValue)
var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(15, 2).setValue("みかん");
// → 15行目2列目(B15)に「みかん」が入力される

// 複数セルに値を一括入力(setValues)→ 2次元配列で指定
var data = [["りんご", 100], ["みかん", 80], ["ぶどう", 200]];
sheet.getRange(1, 1, 3, 2).setValues(data);
// → A1:B3に配列の値を一括入力

setValues(複数形)は配列で一気に入力したい値を指定でき、大量データの書き込みに便利です。

④ セルの表示形式を指定する(setNumberFormat / setNumberFormats)

表は数値や日付など様々な表示形式のデータが混在する場合が多くあります。そんなときに役立つセルの表示形式を指定できるメソッドを紹介します。

// セルの表示形式を指定(setNumberFormat)
var sheet = SpreadsheetApp.getActiveSheet();

// 日付形式 → 2026/08/04
sheet.getRange("A1").setNumberFormat("yyyy/mm/dd");

// 時刻形式 → 06:15 PM
sheet.getRange("B1").setNumberFormat("hh:mm A/P".M."");

// 小数点第1位まで表示 → 5673.3
sheet.getRange("C1").setNumberFormat("####.#");

// カンマ区切り → 123,456
sheet.getRange("D1").setNumberFormat("#,###");

// 複数セルに一括指定(setNumberFormats)
var formats = [["yyyy/mm/dd", "#,###"]];
sheet.getRange(1, 1, 1, 2).setNumberFormats(formats);

独自関数(カスタム関数)の作成

上記のようにGASには様々な便利なメソッドが用意されていますが、独自の関数を作成することもできます。例えば、金額を税込み表示にしたり、西暦と和暦を変換したりと目的に応じて作成できます。

カスタム関数の作成方法

まずはスクリプトエディタ(Apps Script)を開いて、プロジェクト名を編集(初期は「無題のプロジェクト」)して任意の名前をつけます。次にスクリプトを書いていきます。今回は例として入力された金額を税込み金額にする関数「SYOHIZEI」を作成します。

/**
 * 金額を税込にする関数SYOHIZEI
 *
 * @param {Number} price 税抜金額
 * @return {Number} 税込金額
 * @customfunction
 */
function SYOHIZEI(price) {
  const taxProp = 0.1;       // 税率10%(constは定数)
  return price * (1 + taxProp);
}

記述したら忘れずに保存してください。Apps Scriptエディタは自動的に保存されません。Ctrl+S(Mac: Cmd+S)でも保存できます。

コード先頭の「/**〜*/」で囲まれた部分はドキュメンテーションコメントです。@customfunction タグを追加することで、スプレッドシートで関数を入力する際に補完の候補として表示されるようになります。メンバー間での共有・メンテナンス時にも大変役立ちます。GASで使えるタグは以下の3つです。

  • @param:引数のデータ型と説明
  • @return:戻り値のデータ型と説明
  • @customfunction:スプレッドシートのカスタム関数として使う

スプレッドシートでの使い方

作成した関数はスプレッドシートでSUM関数などと同じように関数名を指定して使用できます。「A列に数値を入力→B列でA列の数値を税込み金額に直す」という動きにする場合、B1に「=SYOHIZEI(A1)」と入力します。

// スプレッドシートのセルに入力する式
=SYOHIZEI(A1)
// A1に100を入力していた場合 → 110 と表示される

// エラーを非表示にしたい場合(取引先や印刷書類向け)
=IFERROR(SYOHIZEI(A1), "")

よくある質問(FAQ)

Q. 「拡張機能」メニューが表示されない場合はどうすればいいですか?

古いUIが残っている場合は「ツール」→「スクリプトエディタ」でも開けることがあります。ただし現在の標準UIは「拡張機能」→「Apps Script」です。Googleアカウントが組織のアカウント(G Suite/Google Workspace)の場合、管理者によって機能が制限されている場合があります。

Q. GASはJavaScriptを知らなくても使えますか?

基本的な構文はJavaScriptと同じですが、GAS固有のメソッド(SpreadsheetApp・getRange等)は覚える必要があります。本記事で紹介したメソッドを組み合わせるだけでも多くの自動化が実現できるため、JavaScript未経験でも少しずつ始められます。公式リファレンス(Google Apps Script Reference)も充実しています。

Q. スクリプトの実行権限(承認)を求められました。どうすればいいですか?

初めてスクリプトを実行すると「このアプリはGoogleで確認されていません」という画面が表示されることがあります。自分で作成したスクリプトの場合は「詳細」→「プロジェクト名(安全ではないページ)に移動」→「許可」で承認できます。

Q. GASは無料で使えますか?

はい、Googleアカウントがあれば無料で使えます。ただし実行時間・トリガー数・メール送信数などに1日あたりの利用上限があります。個人利用では上限に達するケースはまれですが、大規模自動化の場合は「Google Workspace」有料プランで上限が緩和されます。

まとめ:GASでスプレッドシートをもっと便利に活用しよう

この記事のポイント:

  • GAS(Google Apps Script)でスプレッドシートをJavaScriptで自動化・カスタマイズできる
  • 現在のエディタ起動方法は「拡張機能 → Apps Script」(旧「ツール → スクリプトエディタ」から変更)
  • 基本4メソッド:getRange(セル指定)・getValue/s(値取得)・setValue/s(値入力)・setNumberFormat(表示形式)
  • カスタム関数を作成してスプレッドシートの通常関数として呼び出せる
  • ドキュメンテーションコメント(@param/@return/@customfunction)でチームメンバーへの共有が楽になる

GASにはまだまだデフォルトでたくさんのメソッドが備わっています。公式のリファレンスサイト(Google Apps Script Reference)で確認できますので、目的に応じて探してみてください。また、独自の関数の作成は作業を自動化するためには切っても切り離せないものになるので、文法などしっかり覚えて活用していきましょう。

▼ アクロビジョンについて

👔

一緒に働きましょう

一人ひとりのキャリアに向き合い、
活躍できる現場をご紹介します。

採用サイトを見る →
💻

システム開発のご依頼・ご相談

コンサルティングから運用保守まで、
ワンストップで対応します。

まずはお気軽にご相談ください →