LoginSignup
0
0

Google Apps Scriptによるスプレッドシート連携の使い分け

Posted at

今更ですが気になったので調べてみました。

Google Apps Scriptを使用して特定のスプレッドシートからデータを取得する場合、以下の2つの方法があります。それぞれの使い分けについて説明します。

  1. 独立したGoogle Apps Scriptプロジェクトとして作成
  2. 特定のスプレッドシートにバインドされたGoogle Apps Scriptとして作成

1. 独立したGoogle Apps Scriptプロジェクトとして作成

メリット

  • 複数のスプレッドシートに対して共通のスクリプトを使用できる
  • スプレッドシートに依存せず、他のGoogleサービスとも連携しやすい

デメリット

  • 特定のスプレッドシートにバインドされていないため、各スプレッドシートへのアクセス権限を明示的に設定する必要がある
  • 設定やデプロイが少し複雑になることがある

手順

  1. Google Apps Scriptエディタにアクセス: Google Apps Scriptからアクセスし、新しいプロジェクトを作成します
  2. スクリプトの作成: コードをエディタに貼り付けます
  3. デプロイ: 「デプロイ」 -> 「新しいデプロイ」 -> 「ウェブアプリ」を選択し、必要なアクセス権限を設定してデプロイします

2. 特定のスプレッドシートにバインドされたGoogle Apps Scriptとして作成

メリット

  • スプレッドシートに直接バインドされるため、アクセス権限の設定が簡単
  • スプレッドシートに関連する操作がスムーズに行える

デメリット

  • そのスプレッドシートにしか使用できない
  • スプレッドシートの依存度が高くなる

手順

  1. スプレッドシートの作成: Google Sheetsで新しいスプレッドシートを作成します
  2. スクリプトエディタの開き方: スプレッドシートを開いた状態で「拡張機能」 -> 「Apps Script」を選択します
  3. スクリプトの作成: コードをエディタに貼り付けます

image.png

コード例

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を使用してスクリプトを実行し、スプレッドシートからデータを取得することができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0