スキップしてメイン コンテンツに移動

GASプロパティで永続化

GASプロパティで永続化

GAS基礎とPropertiesService

Google Apps Script(GAS)は、Google Workspace のサービスを自動化するためのスクリプト言語です。GAS でデータを永続化する際に頻繁に使われるのが PropertiesService です。PropertiesService は、キーと値のペアを保存できるキーバリューストアを提供し、スクリプト全体、ユーザー、またはドキュメント単位で設定値を管理できます。

以下の三種類のプロパティがあります。

  • スクリプトプロパティ(ScriptProperties): スクリプト全体で共有される設定値。
  • ユーザープロパティ(UserProperties): 個々のユーザーが持つ設定値。
  • ドキュメントプロパティ(DocumentProperties): スプレッドシートやドキュメント単位で保持される設定値。

スクリプトプロパティの使い方

スクリプトプロパティは、複数のユーザーが同じスクリプトを実行しても共有できる設定値を保存するのに便利です。例えば、API キーや共通の設定を格納します。

function setScriptProperty() {
  var scriptProps = PropertiesService.getScriptProperties();
  scriptProps.setProperty('API_KEY', '1234567890abcdef');
}

function getScriptProperty() {
  var scriptProps = PropertiesService.getScriptProperties();
  return scriptProps.getProperty('API_KEY');
}

上記の例では、API_KEY をスクリプトプロパティに保存し、必要に応じて取得しています。スクリプトプロパティはスクリプトの実行ユーザーに関係なく同じ値を参照します。

ユーザープロパティの活用

ユーザープロパティは、個々のユーザーが持つ設定値を保存します。例えば、ユーザーごとの表示設定や認証情報を管理できます。

function setUserProperty() {
  var userProps = PropertiesService.getUserProperties();
  userProps.setProperty('theme', 'dark');
}

function getUserProperty() {
  var userProps = PropertiesService.getUserProperties();
  return userProps.getProperty('theme');
}

ユーザープロパティは、スクリプトを実行するユーザーごとに別々の値を保持できるため、個別設定が必要な場合に最適です。

ドキュメントプロパティとデータ保存

ドキュメントプロパティは、スプレッドシートやドキュメント単位で設定値を保存します。例えば、シートごとに異なる API キーを持たせる場合に有効です。

function setDocProperty() {
  var docProps = PropertiesService.getDocumentProperties();
  docProps.setProperty('sheetId', 'sheet-1234');
}

function getDocProperty() {
  var docProps = PropertiesService.getDocumentProperties();
  return docProps.getProperty('sheetId');
}

ドキュメントプロパティは、スプレッドシートの PropertiesService.getDocumentProperties() で取得でき、スプレッドシートの ID をキーにして設定値を管理できます。

永続化と環境変数の管理

PropertiesService は、GAS の永続化ストレージとして最も手軽に利用できるキーバリューストアです。データ保存の際に、環境変数のように扱うことで、コード内にハードコーディングせずに設定値を管理できます。

例えば、以下のように環境変数を設定し、スクリプト内で参照することで、セキュリティを向上させます。

// 環境変数を設定
PropertiesService.getScriptProperties().setProperty('DB_PASSWORD', 's3cr3t');

// 参照
var pwd = PropertiesService.getScriptProperties().getProperty('DB_PASSWORD');

この方法は、デプロイ時に環境変数を変更するだけで、コードを触らずに設定を更新できるため、運用が楽になります。

この記事はAIによって作成されました。

コメント