Google Apps Script(GAS)でスプレッドシートを操作するとき、シートを取得するメソッドは必須じゃ!これが分かれば、データ処理もスムーズになるばい。
今回は、スプレッドシートとシートの関係を整理しながら、主要な取得方法を分かりやすく解説していくばい!
スプレッドシートとシートの関係
まず、GASのスプレッドシートは階層構造になっちょる。
SpreadsheetApp
:スプレッドシート全体を管理する最上位オブジェクト。Spreadsheet
オブジェクト:スプレッドシートファイルのこと。Sheet
オブジェクト:ワークシートのこと。
例えば、Excelで言うと「ブック」がスプレッドシートで、「シート」がGASのSheet
オブジェクトに相当するっちゃね。
スプレッドシートの取得方法
1. アクティブなスプレッドシートの取得
スクリプトが紐づいているスプレッドシートを取得する方法じゃ。
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
トリガー実行時やカスタムメニューからの起動時に使いやすいけ!
2. ID指定でスプレッドシートを開く
スプレッドシートのURLからIDを抜き出して、特定のスプレッドシートを開く方法。
const spreadsheetId = 'スプレッドシートのURLの「/d/」と「/edit」の間にある文字列';
const spreadsheet = SpreadsheetApp.openById(spreadsheetId);
スプレッドシートのURLの「/d/」と「/edit」の間にある文字列がIDじゃ。
3. URLを使って開く
const url = 'スプレッドシートのURL';
const spreadsheet = SpreadsheetApp.openByUrl(url);
URLの変更に弱いから、IDを使う方法のほうがオススメばい!
シートの取得方法
1. アクティブなシートを取得
現在開いているシートを取得する方法。
const activeSheet = spreadsheet.getActiveSheet();
2. 名前で指定する
const sheetName = '月次レポート';
const sheet = spreadsheet.getSheetByName(sheetName);
シート名が完全一致じゃないと取得できんけ、スペースや大文字小文字に気をつけんといかんばい!
3. インデックスで取得
const sheetIndex = 0; // 左端のシート
const firstSheet = spreadsheet.getSheets()[sheetIndex];
シートの並び順が変わると影響を受けるけ、固定する場合は名前指定のほうが安全じゃ。
4. すべてのシートを取得
const allSheets = spreadsheet.getSheets();
シートを一括で処理するときに便利じゃね!
応用テクニック
シートが存在しなければ作成
function getOrCreateSheet(sheetName) {
let sheet = spreadsheet.getSheetByName(sheetName);
if (!sheet) {
sheet = spreadsheet.insertSheet(sheetName);
console.log(`新しいシート「${sheetName}」を作成したばい!`);
}
return sheet;
}
部分一致でシートを検索
function findSheetsByPartialName(partialName) {
return spreadsheet.getSheets().filter(sheet => sheet.getName().includes(partialName));
}
特定のワードを含むシートを探すのに便利じゃ!
落とし穴と対策
シート名変更への対応
getSheetByName()
は名前が変わると使えなくなる。gid
(シートID)を使うと確実。- メタデータ用のシートを作り、IDを管理する方法もあり。
インデックスの不安定性
getSheets()
の順番は変わる可能性があるけ、固定的な処理には向かん。- 重要なシートは
getSheetByName()
で管理すべし。
まとめ
GASでスプレッドシートを操作するなら、適切なシート取得メソッドを使い分けるのがポイントじゃ。
- どのスプレッドシートを操作するか:
getActiveSpreadsheet()
,openById()
,openByUrl()
- どのシートを操作するか:
getActiveSheet()
,getSheetByName()
,getSheets()[index]
- シートがなければ作成:
insertSheet()
これをマスターすれば、スプレッドシートの自動化が一気に楽になるばい!

GASによるSpreadsheetの基本操作まとめ - Qiita
Google Apps Script(GAS)でスプレッドシートの値を読み書きする場合,最も基本的な操作として次のようなステップを経ます。Spreadsheetファイルを開く(SpreadSheetオブジェクトの取得…

[GAS] シートを取得する方法
Google Apps Script で シートを取得する方法のまとめ。 シートの位置(インデックス)で、シート名で、アクティブシート、シート全部を取得する方法をメモ。 シート位...

【GAS】スプシを操作するメソッドあれこれ

GASでスプレッドシートのシート名を取得する方法(getSheetName) | AutoWorker〜Google Apps Script(GAS)とSikuliで始める業務改善入門
Google Apps Script(GAS)ではスプレッドシートの各種操作が可能です。 その中で、スプレッドシートから取得したシートのシート名を取得する方法を解説します。 GA...
コメント