他のスプレッドシートのデータをApps Scriptで操作したいと思ったことはありませんか? openByIdメソッドを使えば、スクリプトから簡単に別のスプレッドシートを開いて読み書きできます。この記事では、openByIdの基本的な使い方から応用例までを詳しく解説します。これを読めば、複数のスプレッドシートを連携した自動処理が実現できるようになります。
【要点】openByIdで別のスプレッドシートを開く手順
- SpreadsheetApp.openById(id): スプレッドシートのIDを指定して開きます。IDはURLから取得できます。
- シートの取得とデータ操作: 開いたスプレッドシートからgetSheetByNameやgetRangeを使って特定のセルにアクセスします。
- 権限の注意点: スクリプトを実行するユーザーが対象のスプレッドシートにアクセスできる必要があります。
ADVERTISEMENT
目次
openByIdメソッドとは
openByIdは、スプレッドシート固有のIDを指定してそのファイルを開くメソッドです。IDはスプレッドシートのURLの一部に含まれています。このメソッドを使うと、スクリプトが動作しているスプレッドシートとは別のファイルにアクセスできます。同じGoogleアカウント内の全スプレッドシートが対象です。
構文は非常にシンプルで、SpreadsheetApp.openById('スプレッドシートID')と記述します。返り値はSpreadオブジェクトです。このオブジェクトを通じてシートやセルの操作を行います。openByIdは開くだけのメソッドであり、読み取りや書き込みは別途getRangeなどを使います。
事前準備:スプレッドシートIDの確認方法
openByIdを使うには、対象のスプレッドシートのIDが必要です。IDはブラウザのアドレスバーに表示されるURLから取得できます。以下の手順で確認してください。
- 対象のスプレッドシートを開く
Googleスプレッドシートをブラウザで開きます。 - URLを確認する
アドレスバーに表示されているURLは、次のような形式です。https://docs.google.com/spreadsheets/d/1aBcDeFgHiJkLmNoPqRsTuVwXyZ/edit#gid=0 - ID部分をコピーする
/d/の次から/editの前までの文字列がIDです。上記の例では1aBcDeFgHiJkLmNoPqRsTuVwXyZが該当します。
openByIdでスプレッドシートを開く手順
基本的な開き方
- スクリプトエディタを開く
Apps Scriptを記述するために、スプレッドシートの「拡張機能」メニューから「Apps Script」をクリックします。スクリプトエディタが新しいタブで開きます。 - openByIdを記述する
次のコードを.gsファイルに記述します。var ss = SpreadsheetApp.openById('ここにIDを入力');
IDは先ほどコピーしたものを貼り付けます。 - 取得したSpreadオブジェクトを使う
変数ssにはSpreadオブジェクトが代入されます。この変数を使って目的のシートを取得します。
シートを取得してデータを読み取る
- シート名を指定する
var sheet = ss.getSheetByName('シート1');
シート名で取得するのが一般的です。存在しない場合はnullが返ります。 - セル範囲を指定する
var range = sheet.getRange('A1:C10');
範囲を指定してデータを取得します。 - 値を読み取る
var values = range.getValues();
二次元配列として値が格納されます。
データを書き込む
- 書き込むセルを指定する
var targetRange = sheet.getRange('B2');
1つのセルでも範囲でも指定できます。 - 値を設定する
targetRange.setValue('新しい値');
単一セルならsetValue、複数ならsetValuesを使います。
ADVERTISEMENT
openById使用時の注意点
IDを間違えるとエラーになる
指定したIDが存在しない場合、Exception: Spreadsheet ID not found エラーが発生します。URLから正しくIDを切り出すことが重要です。また、URLには余分なパラメータが含まれていることがあるので、/d/ と /edit の間のみをコピーしてください。
アクセス権限がないと開けない
スクリプトを実行するユーザーが対象のスプレッドシートに対して「閲覧」以上の権限を持っている必要があります。権限がない場合はエラーとなります。共有設定を確認するか、スクリプトの実行ユーザーを変更してください。スクリプトは実行ユーザーの権限で動作します。
大量のセルを処理するときはパフォーマンスに注意
openByIdで開いたスプレッドシートに対して大量の書き込みや読み取りを行うと、実行時間が長くなることがあります。特にgetValuesやsetValuesは範囲が大きいほど負荷がかかります。必要最小限の範囲に絞る、またはバッチ処理を検討してください。
openByIdとopenByUrlの比較
| 項目 | openById | openByUrl |
|---|---|---|
| 引数 | スプレッドシートID(文字列) | 完全なURL(文字列) |
| 使いやすさ | IDだけなので短く記述できる | URL全体を渡すため少し冗長 |
| エラーリスク | ID部分のみのためコピーミスが起きにくい | URL全体の文字列が長く、タイプミスしやすい |
| 互換性 | Googleスプレッドシート専用 | Googleスプレッドシート専用(URLが正しければ同じ) |
まとめ
この記事では、Apps ScriptのopenByIdメソッドを使って他のスプレッドシートを開く方法を解説しました。openByIdはスプレッドシートIDを指定するだけで簡単に別ファイルにアクセスできる便利なメソッドです。開いた後はgetSheetByNameやgetRangeを使ってデータの読み書きができます。次は、例えばIMPORTRANGEと組み合わせた自動データ集計や、複数シートをまたいだバッチ処理に挑戦してみてください。openByIdと他のメソッドを組み合わせることで、スプレッドシートの自動化の幅が大きく広がります。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】複合グラフで棒と折れ線を同時表示!2軸グラフの作り方
- 【Googleスプレッドシート】FILTER関数で条件に合う行だけ抽出!数式1つで動的な絞り込み
- 【Googleスプレッドシート】フィルタ表示で他の人の表示を変えずに絞り込み!共有時の使い分け
- 【Googleスプレッドシート】重複データを抽出して表示!COUNTIFと条件付き書式の併用
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】ARRAYFORMULAで列全体に数式を一括適用!セル分の入力を不要に
- 【Googleスプレッドシート】データ範囲を動的に伸縮させる!INDIRECTと参照範囲のコツ
- 【Googleスプレッドシート】共有解除と権限の取り消し!アクセスを完全に閉じる手順
