GAS入門① スプレッドシート操作の基本
Google Apps Script(GAS)を使用したスプレッドシート操作について、非常に分かりやすく解説いたします。
はじめに
Google Apps Script(以下、GAS)は、Googleが提供するスクリプト言語です。GASを使うことで、Google スプレッドシートを自動的に操作したり、データを効率的に処理したりすることができます。
スプレッドシートとは
スプレッドシートは、Googleが提供する無料のオンラインの表計算ソフトです。セルに数値やテキストを入力して様々なデータを管理・分析することができます。
Excelに似た機能を持ちながら、ブラウザ上で動作し、複数人での同時編集やリアルタイムでの共有が可能という特徴があります。
また、関数やグラフ機能を使ってデータの計算や視覚化を行うことができ、ビジネスでの売上管理から、個人での家計簿まで、幅広い用途で活用されています。
GASエディタ画面を開くには
スプレッドシート画面上部の「拡張機能」をクリック
メニューから「Apps Script」を選択
これにより、新しいタブでGoogle Apps Scriptのエディタが開きます。エディタ画面では、スプレッドシートを操作するためのスクリプトを作成・編集することができます。
スプレッドシートへのアクセス方法
GASでスプレッドシートを操作する際は、以下の階層構造でアクセスします。
スプレッドシートファイル
シート
セル
セルの値
スプレッドシートファイルへのアクセス
SpreadsheetAppクラスを使用して、スプレッドシートにアクセスします。主に以下の2つの方法があります:
現在開いているスプレッドシートにアクセスする場合
const ss = SpreadsheetApp.getActiveSpreadsheet();
別のスプレッドシートにアクセスする場合
const ss = SpreadsheetApp.openById("スプレッドシートのID");
// または
const ss = SpreadsheetApp.openByUrl("スプレッドシートのURL");
※スプレッドシートのIDは、URLの中で1から始まるスラッシュ(/)で挟まれた部分です。
シートへのアクセス
スプレッドシートファイルの中の特定のシートにアクセスするには、以下の2つの方法があります。
現在アクティブなシートにアクセスする
const sheet = ss.getActiveSheet();
シート名を指定してアクセスする
const sheet = ss.getSheetByName("シート名");
セルへのアクセス
シート内の特定のセルにアクセスするには、getRange()メソッドを使用します
セル番号で指定する(推奨)
// B3セルにアクセスする場合
const cell = sheet.getRange(3, 2); // 3行目、2列目
セル名で指定する
const cell = sheet.getRange("B3");
セルの値の取得と入力
単一のセルの値を操作する
指定したセルの値を取得
const value = cell.getValue();
指定したセルに値を入力
cell.setValue("新しい値");
複数セルの操作
複数セルの範囲指定
複数のセルを一度に操作する場合も、getRange()メソッドを使用します
// A1からA5までの範囲を指定する場合
const cells = sheet.getRange(1, 1, 5, 1);
// パラメータの意味:
// 1番目:開始行番号
// 2番目:開始列番号
// 3番目:行数
// 4番目:列数
複数セルの値の取得と設定
複数のセルを操作する場合は、getValues()とsetValues()を使用します
複数セルの値を取得
const valueList = sheet.getRange(1, 1, 5, 1).getValues();
// 戻り値は2次元配列: [[値1], [値2], [値3], [値4], [値5]]
複数セルに値を入力
const valueList = [[1], [2], [3], [4], [5]];
sheet.getRange(1, 1, 5, 1).setValues(valueList);
注意点
getValues()とsetValues()は複数形(末尾にsがつく)であることに注意
値の設定時は2次元配列の形式で指定する必要がある
実践例
シート間でデータをコピーし、合計を計算する例を見てみましょう:
function copyAndSum() {
// スプレッドシートを取得
const ss = SpreadsheetApp.getActiveSpreadsheet();
// シート1とシート2を取得
const sheet1 = ss.getSheetByName("シート1");
const sheet2 = ss.getSheetByName("シート2");
// シート1のA1:A5の値を取得
const values = sheet1.getRange(1, 1, 5, 1).getValues();
// シート2のC1:C5に値をコピー
sheet2.getRange(1, 3, 5, 1).setValues(values);
// 合計値を計算
let sum = 0;
for (const value of values) {
sum += value[0];
}
// 合計値をC6に設定
sheet2.getRange(6, 3).setValue(sum);
}
まとめ
GASを使用したスプレッドシート操作の基本は以下の通りです。
SpreadsheetAppクラスを使用してスプレッドシートにアクセス
getActiveSheet()またはgetSheetByName()でシートを取得
getRange()で操作するセルの範囲を指定
getValue/setValue()または、getValues/setValues()で値の取得・設定
これらの基本操作を組み合わせることで、様々な自動化や効率化が可能になります。
初めは文法や構文に慣れるまで時間がかかるかもしれませんが、基本的なパターンを押さえておけば、徐々に複雑な操作も実装できるようになっていきます。
シンギュラリティ・ラボのご案内
オンラインサロン「シンギュラリティ・ラボ」(通称シンラボ)では、GASも含めたプログラミングをはじめ、さまざまなITスキルを学び、実践する場を準備しております。
初心者から経験者まで、どなたでも参加可能です。少しでも興味がございましたらお気軽にお越しください。
シンギュラリティ・ラボHP
お問い合わせ先
sinlab-recruit@future-tech-association.org