メディア掲載: レバテックフリーランス様のサイトで当ブログが紹介されました

GAS: スプレッドシートを取得する

Google Apps Scriptでスプレッドシートを操作する場合、まず最初に対象のスプレッドシートを取得する必要があります。

この記事では、その代表的な方法(コード)を紹介します。

スクリプトが紐づいているスプレッドシートを取得する

スプレッドシートの拡張機能 > Apps Scriptからスクリプトを作成した場合、スクリプトはそのスプレッドシートに紐づいている状態です。(コンテナバインドスクリプトといいます)

その場合は下記の方法でスプレッドシートを取得するのが最も簡単です。

const spreadSheet = SpreadsheetApp.getActiveSpreadsheet();

IDやURLを指定してスプレッドシートを取得する

スプレッドシートのIDURLがわかる場合は、それを使うのも堅実です。
(IDはスプレッドシートのURLを見ればわかります。)

GoogleスプレッドシートのURL内の、d/以降、次の/までの部分がスプレッドシートのIDである
URLのうち、spreadsheets/d/の次の部分がスプレッドシートのID
const spreadSheet = SpreadsheetApp.openById("スプレッドシートのID");
const spreadSheet = SpreadsheetApp.openByUrl("スプレッドシートのURL");

ファイル名を指定してスプレッドシートを取得する

ファイル名のみを指定した場合、Googleドライブ上に同じ名前のファイルが複数あると、意図しないファイルを取得してしまう恐れがあります。
(自分のファイルだけでなく、他者に共有されたファイルも検索対象になります)

よって、格納しているフォルダなどを指定することをお勧めします。

なお、フォルダのIDは、URLを見ればわかります。

GoogleドライブのフォルダのURL内の、folders/より後ろの部分がフォルダのIDである
URLのうち、folders/の次の部分がフォルダのID

格納フォルダのIDがわかる場合

例えば、所定の売上データフォルダの中に、YYYY年M月という名前のファイルが毎月格納されるのがわかっている場合、ファイル名を指定してスプレッドシートを取得できると便利ですね。

Googleドライブで、「売上データ」フォルダ内に「2023年4月」「2023年5月」「2023年6月」フォルダが存在する例。
「売上データ」フォルダは不変でIDがわかるが、その中にあるスプレッドシートのIDはわからない場合(ファイル名はわかる)。

スプレッドシートを取得するコードは下記のとおりです。
格納フォルダをIDで取得した上で、そのフォルダ内にあるファイルを名前指定で取得します。

const folder = DriveApp.getFolderById("格納フォルダのID");
const file = folder.getFilesByName("スプレッドシートの名前").next();
const spreadSheet = SpreadsheetApp.openById(file.getId());

格納フォルダは名前しかわからず、その親フォルダのIDはわかる場合

例えば、所定の売上データフォルダの中に、YYYY年M月という名前のフォルダが毎月作成され、その中にファイルが格納されるのがわかっている場合、格納フォルダ名とファイル名を指定してスプレッドシートを取得できると便利ですね。

Googleドライブで、「売上データ」フォルダ内に「2023年4月」「2023年5月」「2023年6月」フォルダが存在し、その配下の「売上データ」「支払データ」「その他のデータ」の3つのスプレッドシートが格納されている例。
格納フォルダのIDはわからないが、その親フォルダのIDはわかる場合。

スプレッドシートを取得するコードは下記のとおりです。

const parentFolder = DriveApp.getFolderById("親フォルダのID");
const folder = parentFolder.getFoldersByName("格納フォルダの名前").next();
const file = folder.getFilesByName("スプレッドシートの名前").next();
const spreadSheet = SpreadsheetApp.openById(file.getId());

スプレッドシートを取得することによって可能になること

ここまで紹介してきたコードによって、スプレッドシートを取得することができました。

これによって、スプレッドシートの名前を変更したり、コピーを作成したり、閲覧者・編集者を更新したり、シートを追加したり・・・と、様々な操作をスクリプトで行うことができるようになります。

以下はほんの一例ですが、行うことができる処理(メソッド)を紹介します。

メソッド説明使用例
getName()スプレッドシートの名前を取得する。Logger.log(spreadSheet.getName())
addViewer(emailAddress)「閲覧者」にユーザーを追加する。spreadSheet.addViewer('taro@web-breeze.net')
addViewers(emailAddress)「閲覧者」にユーザーを複数追加する。spreadSheet.addViewers(['taro@web-breeze.net', 'hanako@web-breeze.net'])
addEditor(emailAddress)「編集者」にユーザーを追加する。spreadSheet.addEditor('taro@web-breeze.net')
addEditors(emailAddresses)「編集者」にユーザーを複数追加する。spreadSheet.addEditors(['taro@web-breeze.net', 'hanako@web-breeze.net'])
copy(name)スプレッドシートをコピーし、コピーしたスプレッドシートを返す。const copySpreadSheet = spreadSheet.copy('スプレッドシートのコピー')
insertSheet(sheetName)シートを追加する。spreadSheet.insertSheet('追加シート')

他にも様々なメソッドがありますので、必要に応じて公式のリファレンスを参照してください。

また、シートやセルに対して操作を行うためには、スプレッドシートを取得した後、更にシート範囲を取得する必要があります。

こちらの記事で解説していますので、ぜひご覧ください。

コメント

タイトルとURLをコピーしました