1. ホーム
  2. /
  3. [GAS]
  4. /
  5. 【GAS】getDataSourceUrl()で外部連携URLを取得する方法(※非推奨・代替案あり)

【GAS】getDataSourceUrl()で外部連携URLを取得する方法(※非推奨・代替案あり)

【GAS】getDataSourceUrl()で外部連携URLを取得する方法(※非推奨・代替案あり)

Google Apps Script (GAS)でスプレッドシートのデータを外部システムと連携させたい場合、過去にはgetDataSourceUrl()というメソッドが使われていました。しかし、このメソッドは現在では非推奨となっており、利用には注意が必要です。

この記事では、getDataSourceUrl()がどのような機能であったかと、現在推奨されている代替方法について解説します。

Google Apps Script 始め方 スプレッドシート 活用例
Google Apps Script 始め方 スプレッドシート 活用例 を各ショップで検索

getDataSourceUrl()とは?(※非推奨)

getDataSourceUrl()は、指定したRangeのデータを、外部からJSON形式で取得できる特殊なURLを生成するメソッドでした。

このURLを知っていれば誰でもデータにアクセスできるため、手軽なデータ公開手段として利用されていましたが、セキュリティ上のリスクも大きいものでした。

過去の基本的な使い方

// ※ このコードは現在推奨されていません
function generateLegacyDataSourceUrl() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName('公開データ');
  
  // スプレッドシートの共有設定を「リンクを知っている全員」にする必要があった
  const dataRange = sheet.getRange('A1:B10');
  
  const sourceUrl = dataRange.getDataSourceUrl();
  console.log('生成されたデータソースURL:', sourceUrl);
}

この機能は、Googleのセキュリティ強化方針により、現在ではその利用が推奨されていません。既存のスクリプトで使われている場合を除き、新規での利用は避けるべきです。

代替案:ContentServiceを使って安全なAPIを作成する

現在、スプレッドシートのデータを外部に公開する最も安全で推奨される方法は、ContentServiceを使って自作のWeb APIを作成することです。

doGet()という特別な関数を定義することで、GASプロジェクトのURLにアクセスがあった際に、指定したデータを返すAPIとして機能させることができます。

doGet()を使ったAPIの基本実装

以下のスクリプトは、特定のスプレッドシートのデータをJSON形式で返すシンプルなWeb APIです。

// この関数は、ウェブアプリとしてデプロイすると機能します
function doGet(e) {
  try {
    const ss = SpreadsheetApp.openById("ここにスプレッドシートIDを入力");
    const sheet = ss.getSheetByName("公開用シート");
    const data = sheet.getDataRange().getValues();

    // データをJSON文字列に変換
    const jsonString = JSON.stringify(data);

    // ContentServiceを使ってJSONとして出力
    return ContentService.createTextOutput(jsonString)
                         .setMimeType(ContentService.MimeType.JSON);

  } catch (error) {
    // エラーハンドリング
    const errorJson = JSON.stringify({ error: error.message });
    return ContentService.createTextOutput(errorJson)
                         .setMimeType(ContentService.MimeType.JSON);
  }
}

この方法のメリット

  1. アクセス制御: スクリプトの実行権限を「自分のみ」または「Googleアカウントでログインしているユーザー」に限定でき、意図しない第三者によるアクセスを防げます。
  2. 柔軟なデータ加工: getValues()で取得したデータをGAS上で自由に加工・整形してから返すことができます。必要なデータだけを選別したり、形式を整えたりすることが可能です。
  3. セキュリティ: スプレッドシート自体を「リンクを知っている全員」に公開する必要がありません。スクリプト経由でのみデータが公開されるため、元データの安全性が高まります。
  4. パラメータの利用: doGet(e)の引数eを通じて、URLのクエリパラメータ(例: ?id=123)を受け取り、返すデータを動的に変更することも可能です。

まとめ

getDataSourceUrl()は過去の遺物であり、現在ではContentServiceを用いたWeb APIの作成がベストプラクティスです。

  • getDataSourceUrl()はセキュリティリスクがあるため使用しない
  • ContentServicedoGet(e)を使って、安全で柔軟なAPIを自作する
  • API化することで、スプレッドシートを共有設定で公開する必要がなくなり、元データの安全性が向上する。

外部とのデータ連携を実装する際は、必ずContentServiceを利用する方法を検討してください。

Google Apps Script 始め方 スプレッドシート 活用例
Google Apps Script 始め方 スプレッドシート 活用例 を各ショップで検索
Class Range | Apps Script | Google for Developers

関連記事

【GAS】getDataSourceTables()でBigQueryデータソース表を取得・更新する方法

【GAS】getDataSourceTables()でBigQueryデータソース表を取得・更新する方法

Googleスプレッドシートの「接続されたシート」機能は、BigQueryなどの外部データを直接扱える強力な機能ですが、そのデータ更新を自動化したいと考えたことはありませんか? getDataSourceTables()は、このデータソースとの連携をGoogle Apps Script (GAS)から制御するための専門的なメソッドです。

この記事では、getDataSourceTables()を使ってデータソース表を取得し、そのデータをプログラムで更新・管理する方法を解説します。

【GAS】スプレッドシートの指定範囲の行数を取得!getNumRows()徹底解説

【GAS】スプレッドシートの指定範囲の行数を取得!getNumRows()徹底解説

Google Apps Script (GAS) を使ってスプレッドシートの自動化を行う際、指定した「範囲にいくつの行が含まれているか」を正確に把握することは、スクリプトの柔軟性と汎用性を高める上で不可欠です。getNumRows() メソッドは、この範囲の行数を簡単に取得し、動的なデータ処理やデータ検証を可能にする強力なツールです。

本記事では、GASのgetNumRows()の基本的な使い方から、データ範囲の動的取得、getLastRow()との違い、二次元配列との連携、データフォーマットの検証と自動修正、さらにはパフォーマンス最適化まで、具体的なコードを交えて徹底解説します。getNumRows()をマスターし、スプレッドシートの自動化スクリプトをより堅牢で効率的なものに変えましょう。