アクティブでないスプレッドシートやシートを取得しようとする中で色々と試していましたが、
var sheet = ss.getSheets()[0];
このように記述しても「ss.getSheets()[0]; is not a function」といったエラーが出ました。
getSheets()はアクティブスプレッドシートに対するモノではないと使用できないのが原因のようです。
よくあるスプレッドシートを変数に格納するためのコードは下記のようなものがあります。
var ss = SpreadsheetApp.getActiveSpreadsheet();
しかし、これではアクティブなスプレッドシートを格納するだけなので、複数のスプレッドシートを操作するとき、スプレッドシートを開かずに操作するときには使えません。
下記のコードを参考にしてみてください。
//ループ処理などの中で対象スプレッドシートのIDを取得しなおす場合は下記のやり方。
let ssId = ss.getId();
//IDを使ってスプレッドシートを、変数に格納
var ss = SpreadsheetApp.openById(ssId);
//スプレッドシート内に存在するシート全てを格納する
let sheets = ss.getSheets();
//全シートの内、一つ目のシートを格納する
var sheet = sheets[0];
一例として、こんな感じで作成すれば、アクティブでないスプレッドシートと、アクティブでないシートを取得できます。
GASでスプレッドシートやシートを操作するメリットは、以下のようなものがあります。
今回この記事でアクティブでないスプレッドシートの操作方法をご紹介したのもその一つです。
- 自動化が簡単にできる:GASを使用することで、スプレッドシートの作業を自動化できます。
- 他のサービスとの連携が可能:GASはGoogle Appsと連携することができるため、Googleドライブ、Gmail、カレンダーなどのサービスとも簡単に連携できます。
- 独自の処理が可能:GASはJavaScriptを基にしており、JavaScriptでできることはほぼすべてGASでも可能です。
- 計算処理が高速:GASはGoogleのサーバー上で動作するため、ローカル環境での処理よりも高速に処理できます。
- 誰でも利用可能:GASはGoogleのサービスであるため、Googleアカウントを持っていれば誰でも利用することができます。
今回は非アクティブなスプレッドシートの操作ということで、バックグラウンドの処理を実施しました。
バックグラウンドでの処理とは、ユーザーがスプレッドシートやシートを操作している最中でも、GASが処理を継続して実行されることを指します。具体的には、以下のような処理が考えられます。
- ファイルの自動保存:スプレッドシートやシートの内容を定期的に保存するプログラムを実行することで、自動的にファイルの保存ができます。
- データの自動更新:スプレッドシートに取り込んだデータを自動的に更新するプログラムを実行することで、最新のデータを取得することができます。
- 自動送信メールの送信:特定の条件が満たされた場合に、自動的にメールを送信するプログラムを実行することで、効率的な業務処理が可能になります。
- ファイルの自動生成:スプレッドシートの内容を元に、自動的にPDFやCSVファイルを生成するプログラムを実行することで、作業の効率化が図れます。
バックグラウンドでの処理は、ユーザーにとっては無視できるほどの瞬間的な処理であっても、時間がかかる処理を実行する場合には大きなメリットがあります。
また、GASにはトリガー機能があり、一定の時間や特定のイベントが発生した際に自動的に処理を実行することができます。これにより、自動化による効率化を実現することができます。
もしも解決できないことが有れば、GoogleヘルプセンターやGoogleコミュニティを活用しましょう。