【Googleスプレッドシート】Apps Scriptで他のスプレッドシートを開く!openByIdの使い方

【Googleスプレッドシート】Apps Scriptで他のスプレッドシートを開く!openByIdの使い方
🛡️ 超解決

他のスプレッドシートのデータを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から取得できます。以下の手順で確認してください。

  1. 対象のスプレッドシートを開く
    Googleスプレッドシートをブラウザで開きます。
  2. URLを確認する
    アドレスバーに表示されているURLは、次のような形式です。
    https://docs.google.com/spreadsheets/d/1aBcDeFgHiJkLmNoPqRsTuVwXyZ/edit#gid=0
  3. ID部分をコピーする
    /d/ の次から /edit の前までの文字列がIDです。上記の例では 1aBcDeFgHiJkLmNoPqRsTuVwXyZ が該当します。

openByIdでスプレッドシートを開く手順

基本的な開き方

  1. スクリプトエディタを開く
    Apps Scriptを記述するために、スプレッドシートの「拡張機能」メニューから「Apps Script」をクリックします。スクリプトエディタが新しいタブで開きます。
  2. openByIdを記述する
    次のコードを.gsファイルに記述します。
    var ss = SpreadsheetApp.openById('ここにIDを入力');
    IDは先ほどコピーしたものを貼り付けます。
  3. 取得したSpreadオブジェクトを使う
    変数ssにはSpreadオブジェクトが代入されます。この変数を使って目的のシートを取得します。

シートを取得してデータを読み取る

  1. シート名を指定する
    var sheet = ss.getSheetByName('シート1');
    シート名で取得するのが一般的です。存在しない場合はnullが返ります。
  2. セル範囲を指定する
    var range = sheet.getRange('A1:C10');
    範囲を指定してデータを取得します。
  3. 値を読み取る
    var values = range.getValues();
    二次元配列として値が格納されます。

データを書き込む

  1. 書き込むセルを指定する
    var targetRange = sheet.getRange('B2');
    1つのセルでも範囲でも指定できます。
  2. 値を設定する
    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

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。