Google Apps Scriptでスプレッドシートの各シートを操作する場合、最初に対象のスプレッドシートを取得し、次に、対象のシートを取得する必要があります。
この記事では、シートを取得する方法(コード)を紹介します。
シート名を指定して取得する
シート名を指定してシートを取得します。
シート名が変更されていたりすると、もちろんシートが取得できなくなってしまいますので、注意して運用する必要があります。
const spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
const sheet = spreadSheet.getSheetByName('シート名');
(左からみた)順番を指定して取得する
すべてのシートのうちの左からn番目のシート・・・というように、シートの位置を指定して取得することもできます。
シートの並び順が変わってしまうと、取得されるシートも変わってしまいますので、注意して運用する必要があります。
最初にgetSheetsメソッドですべてのシートを配列として取得し、その配列の添字を指定してシートを取得する形になります。
const spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
const sheets = spreadSheet.getSheets(); // すべてのシートを配列で取得
const sheet = sheets[2]; // 左から3番目のシートを取得
Google Apps Scriptにおける配列は0番から始まるため、一番左のシートを取得する場合はsheets[0]、左から2番目のシートを取得する場合はsheets[1]、左から3番目のシートを取得する場合はsheets[2] …というように指定します。
アクティブなシートを取得する
スプレッドシートに紐づいているスクリプト(コンテナバインドスクリプト)では、そのスプレッドシートで現在アクティブなシートを取得できます。
const sheet = SpreadsheetApp.getActiveSheet(); // アクティブなシートを取得
Apps Scriptは様々な実行方法(エディタの▷実行ボタン、図形クリック、カスタムメニュー、トリガー、WEBアプリ…など)がありますが、基本的には、実行時に表示しているシートが取得されます。
スクリプトエディタをブックマーク等から直接起動して▷実行した場合、時間主導型トリガーで実行した場合、WEBアプリから実行した場合は、どのシートがアクティブか判別できないため、最も左のシートが取得されます。
また、フォーム送信時のトリガーで実行した場合は、フォームが紐づいているシートが取得されます。
シートを取得することによって可能になること
ここまで紹介してきたコードによって、スプレッドシート内のシートを取得することができました。
これによって、シートの名前を変更したり、行や列を追加・削除したり、コピーを作成したり・・・と、様々な操作をスクリプトで行うことができるようになります。
以下はほんの一例ですが、行うことができる処理(メソッド)を紹介します。
メソッド | 説明 | 使用例 |
---|---|---|
getName() | シートの名前を取得する。 | Logger.log(sheet.getName()) |
setName() | シートの名前を変更する。 | sheet.setName('変更後のシート名') |
appendRow(rowContents) | シート内のデータの末尾に新たなデータ(行)を追加する。 | sheet.appendRow(['太郎', '経理部', '男']); |
deleteRow(rowPosition); | 指定した行を削除する。 最初の行は 1 です。 | sheet.deleteRow(2) |
deleteColumn(columnPosition) | 指定した列を削除する。 最初の列は 1 です。 | sheet.deleteColumn(2) |
getLastRow() | コンテンツが含まれている最後の行の番号を取得する。 | const lastRow = sheet.getLastRow() |
getLastColumn() | コンテンツが含まれている最後の列の番号を取得する。 |
|
他にも様々なメソッドがありますので、必要に応じて公式のリファレンスを参照してください。
また、より細かくセルの値を取得・更新したり、シートを取得した後、更に範囲を取得する必要があります。
その方法については、こちらの記事にまとめましたので、ぜひご覧ください。
コメント