Google Apps Scriptでスプレッドシートを操作する場合、まず最初に対象のスプレッドシートを取得する必要があります。
この記事では、その代表的な方法(コード)を紹介します。
スクリプトが紐づいているスプレッドシートを取得する
スプレッドシートの拡張機能 > Apps Scriptからスクリプトを作成した場合、スクリプトはそのスプレッドシートに紐づいている状態です。(コンテナバインドスクリプトといいます)
その場合は下記の方法でスプレッドシートを取得するのが最も簡単です。
const spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
IDやURLを指定してスプレッドシートを取得する
スプレッドシートのIDやURLがわかる場合は、それを使うのも堅実です。
(IDはスプレッドシートのURLを見ればわかります。)
const spreadSheet = SpreadsheetApp.openById("スプレッドシートのID");
const spreadSheet = SpreadsheetApp.openByUrl("スプレッドシートのURL");
ファイル名を指定してスプレッドシートを取得する
ファイル名のみを指定した場合、Googleドライブ上に同じ名前のファイルが複数あると、意図しないファイルを取得してしまう恐れがあります。
(自分のファイルだけでなく、他者に共有されたファイルも検索対象になります)
よって、格納しているフォルダなどを指定することをお勧めします。
なお、フォルダのIDは、URLを見ればわかります。
格納フォルダのIDがわかる場合
例えば、所定の売上データフォルダの中に、YYYY年M月という名前のファイルが毎月格納されるのがわかっている場合、ファイル名を指定してスプレッドシートを取得できると便利ですね。
スプレッドシートを取得するコードは下記のとおりです。
格納フォルダをIDで取得した上で、そのフォルダ内にあるファイルを名前指定で取得します。
const folder = DriveApp.getFolderById("格納フォルダのID");
const file = folder.getFilesByName("スプレッドシートの名前").next();
const spreadSheet = SpreadsheetApp.openById(file.getId());
格納フォルダは名前しかわからず、その親フォルダのIDはわかる場合
例えば、所定の売上データフォルダの中に、YYYY年M月という名前のフォルダが毎月作成され、その中にファイルが格納されるのがわかっている場合、格納フォルダ名とファイル名を指定してスプレッドシートを取得できると便利ですね。
スプレッドシートを取得するコードは下記のとおりです。
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('追加シート') |
他にも様々なメソッドがありますので、必要に応じて公式のリファレンスを参照してください。
また、シートやセルに対して操作を行うためには、スプレッドシートを取得した後、更にシートや範囲を取得する必要があります。
こちらの記事で解説していますので、ぜひご覧ください。
コメント