今更ですが気になったので調べてみました。
Google Apps Scriptを使用して特定のスプレッドシートからデータを取得する場合、以下の2つの方法があります。それぞれの使い分けについて説明します。
- 独立したGoogle Apps Scriptプロジェクトとして作成
- 特定のスプレッドシートにバインドされたGoogle Apps Scriptとして作成
1. 独立したGoogle Apps Scriptプロジェクトとして作成
メリット
- 複数のスプレッドシートに対して共通のスクリプトを使用できる
- スプレッドシートに依存せず、他のGoogleサービスとも連携しやすい
デメリット
- 特定のスプレッドシートにバインドされていないため、各スプレッドシートへのアクセス権限を明示的に設定する必要がある
- 設定やデプロイが少し複雑になることがある
手順
- Google Apps Scriptエディタにアクセス: Google Apps Scriptからアクセスし、新しいプロジェクトを作成します
- スクリプトの作成: コードをエディタに貼り付けます
- デプロイ: 「デプロイ」 -> 「新しいデプロイ」 -> 「ウェブアプリ」を選択し、必要なアクセス権限を設定してデプロイします
2. 特定のスプレッドシートにバインドされたGoogle Apps Scriptとして作成
メリット
- スプレッドシートに直接バインドされるため、アクセス権限の設定が簡単
- スプレッドシートに関連する操作がスムーズに行える
デメリット
- そのスプレッドシートにしか使用できない
- スプレッドシートの依存度が高くなる
手順
- スプレッドシートの作成: Google Sheetsで新しいスプレッドシートを作成します
- スクリプトエディタの開き方: スプレッドシートを開いた状態で「拡張機能」 -> 「Apps Script」を選択します
- スクリプトの作成: コードをエディタに貼り付けます
コード例
function doGet(e) {
const requiredParams = ['sheetName'];
// パラメータの検証
for (const param of requiredParams) {
if (!e.parameter[param]) {
return ContentService.createTextOutput(`必要なパラメータが不足しています: ${param}`)
.setMimeType(ContentService.MimeType.TEXT);
}
}
const sheetName = e.parameter.sheetName;
try {
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
const sheet = spreadsheet.getSheetByName(sheetName);
if (!sheet) {
throw new Error('指定されたシートが見つかりません');
}
const data = sheet.getDataRange().getValues();
return ContentService.createTextOutput(JSON.stringify(data))
.setMimeType(ContentService.MimeType.JSON);
} catch (error) {
return ContentService.createTextOutput(`エラーが発生しました: ${error.message}`)
.setMimeType(ContentService.MimeType.TEXT);
}
}
このコードは、特定のスプレッドシートにバインドされたスクリプト用で調整されています。spreadsheetId
パラメータが不要で、SpreadsheetApp.getActiveSpreadsheet()
を使用して現在のスプレッドシートにアクセスします。
使い分けのイメージ
- 複数のスプレッドシートに対して共通のスクリプトを使用したい場合: 独立したGoogle Apps Scriptプロジェクトとして作成し、スプレッドシートIDをクエリパラメータとして渡します
- 特定のスプレッドシートにのみ使用する場合: 特定のスプレッドシートにバインドされたGoogle Apps Scriptとして作成します。これにより、簡単にアクセス権限を設定し、スプレッドシートの操作がシンプルになります
デプロイと実行
どちらの方法でも、スクリプトを作成した後にデプロイする必要があります。デプロイ時には適切な権限を設定し、ウェブアプリとして公開します。これにより、指定したURLを使用してスクリプトを実行し、スプレッドシートからデータを取得することができます。