Google Apps ScriptのBigQuery Serviceのメソッドの引数の調べ方

Google Apps ScriptからBigQueryの機能を利用するにはAdvanced ServiceであるBigQuery Serviceを利用する。

https://developers.google.com/apps-script/reference#advanced_services

このAdvanced Serviceのメソッドを調べるには少し知識が必要になる。

公開APIとの互換性

Advanced Serviceは、基本的にはGoogleの各サービスが用意している公開APIのラッパーになっている。

An advanced Google service is basically a thin wrapper around an API, and isn’t an API itself.

Advanced services

BigQuery Serviceも、基本的にはWrapperなのでオブジェクト・メソッド・引数などに互換性がある。

Like all advanced services in Apps Script, the BigQuery service uses the same objects, methods, and parameters as the public API.

BigQuery Service

ドキュメントの省略と読み替え

オブジェクト・メソッド・引数に互換性があることで、BigQuery Serviceとしてのドキュメントは省略されており、使い方についてはBigQueryの公開APIのドキュメントを参照して調べることになる。

How method signatures are determinedに詳しい説明があるが、公開APIから生成されたApps Scriptのメソッドは下記の順番で引数をとる。

  1. リクエストボディ(JavaScript Object)
  2. Pathもしくは必須パラメータ
  3. 添付メディアファイル(Blob)
  4. オプションパラメータ(JavaScript Object)
  5. HTTPリクエストヘッダー(JavaScript Object)

例えば、BigQueryでJobをInsertするjobs.insertの場合、公式ドキュメントには下記の説明がある。

Path ParametersprojectId
Request BodyJobオブジェクト

また、メディアファイルのアップロードを受け付ける機能がある旨の記述がある。

JobオブジェクトのJSON表現を元に、最初のパラメータにJobオブジェクト、次のパラメータにProject ID、三つ目のパラメータにアップロードするデータのBlobを指定するコードを書くと下記のようになる。

const csvString = "John,39\nPeter,25\n";
const blobData = Utilities.newBlob(csvString)

// Create the data upload job.
const job = {
  configuration: {
    load: {
      destinationTable: {
        projectId: projectId,
        datasetId: datasetId,
        tableId: tableId
      }
    }
  }
};

const jobResult = BigQuery.Jobs.insert(job, projectId, blobData);
Pocket