GASのプロパティサービス(プロパティストア)とは?3種類の各特徴と使い分け方まとめ

2023年6月11日

Google Apps Script(GAS)には、プロパティサービス(プロパティストア)と呼ばれる、コードとは別にデータを格納できる機能があります。

プロパティサービスはスクリプトプロパティ、ユーザープロパティ、ドキュメントプロパティの3種類です。

それぞれの特徴と3つのプロパティサービスをどのように使い分けるか解説します。

GASのプロパティサービスとは

Google Apps Script(GAS)にはプロパティサービス(プロパティストア)と呼ばれる機能が用意されています。

プロパティサービスでは、「キーと値」をペアにする形で値や文字列などのデータを保管することが可能です。

例えば、キー:AGE、値:22といった形でGASプロジェクト上にデータを保存しておけます。

通常のGASスクリプトを実行したデータはそのままでは保存して次回の実行に利用することはできませんが、プロパティサービスを利用すればそうした活用も可能です。

Google Apps Script(GAS)でPropertiesService.getScriptProperties().getPropertyやsetPropertyでスクリプトプロパティを取得・保存するサンプルコードを実行した結果

また、プロパティサービスはコード上に記述したくない秘密情報を保管しておくことに適しています。

例えば、APIキーやアクセストークン、パスワードなどの悪用されうるものです。

これらをコード上に記述していると、コードが流出すると秘密情報も一緒に漏れてしまいます。

そうした秘匿しておきたい情報を保存するのに、GASのプロパティは便利です。

プロパティサービスは3種類

Google Apps Script(GAS)のプロパティサービスは、3種類用意されています。

  1. スクリプトプロパティ
  2. ユーザープロパティ
  3. ドキュメントプロパティ
Google Apps Script(GAS)のPropertiesServiceクラスのリファレンス

それぞれのプロパティにはデータが保存される場所が異なっています。

そこで、スクリプトプロパティ、ユーザープロパティ、ドキュメントプロパティの特徴を紹介します。

①スクリプトプロパティ

Google Apps Script(GAS)のプロパティサービスで最もよく使われるのがスクリプトプロパティです。

スクリプトプロパティはGASプロジェクトに紐づく形で値が保存されます。

そのため、同じGASプロジェクトを編集できるユーザーと共有可能です。

さらに、スクリプトプロパティはGASのスクリプトエディタ上の、プロジェクトの設定からGUI操作で追加・閲覧・削除ができます。

GUIによるプロパティストアの操作は、スクリプトプロパティ唯一の機能です。

②ユーザープロパティ

ユーザープロパティはGASプロジェクトを実行するユーザーに紐づく形で値が保存されます。

スクリプトプロパティは、GASプロジェクトにアクセスできるユーザー全てが参照できます。

それに対してユーザープロパティは、ユーザープロパティを保存したユーザー以外は取得できません。

個人のパスワードのような、他のGAS実行ユーザーにも知られたくないより秘匿すべき情報を格納するのにユーザープロパティは適しています。

③ドキュメントプロパティ

3つ目のドキュメントプロパティはスクリプトプロパティとユーザープロパティに比べると利用頻度は少ないです。

ドキュメントプロパティではドキュメントにデータが紐づいています。

コンテナバインドスクリプトを持つGoogleドキュメントやスプレッドシート、Googleスライドが保存先です。

Google Apps Script(GAS)のドキュメントプロパティはGoogleドキュメントやスプレッドシートに値が保存

上記の定義を聞くと、1つのドキュメントに紐づいた複数のGASプロジェクトでドキュメントプロパティを参照できるように感じます。

しかし、実際にはGASプロジェクトAで設定したドキュメントプロパティは、別のGASプロジェクトBから参照することはできません。

各種Googleドキュメント×GASプロジェクトの組み合わせでデータが紐づいているようです。

また、ドキュメントプロパティは保存先がスプレッドシートになるため、コンテナバインドスクリプトのみで実行可能で、スタンドアロンスクリプトでは利用できません。

スクリプト/ユーザー/ドキュメントのプロパティ使い分け

スクリプトプロパティ、ユーザープロパティ、ドキュメントプロパティ3つを解説しましたが、どのように使い分ければよいでしょうか。

それぞれの特徴を表でまとめると、以下の通りです。

 保存場所他ユーザー参照GUI編集・取得
スクリプトプロパティプロジェクト可能可能
ユーザープロパティプロジェクト×ユーザー不可能不可能
ドキュメントプロパティプロジェクト×ドキュメント可能不可能

そのため、プロパティの値を他のユーザーと共有したいかどうかが、大きなポイントです。

他のユーザーと共有したくない情報をプロパティサービス(プロパティストア)に保存する場合は、ユーザープロパティ一択です。

逆に他のユーザーと共有する場合は、スクリプトプロパティorドキュメントプロパティのどちらかになります。

スクリプトプロパティとドキュメントプロパティの違いは以下の2つです。

  1. スタンドアロンスクリプトで使えるか
  2. スクリプトエディタのGUIで追加・参照可能か

したがって、スタンドアロンスクリプトのGASプロジェクトの場合や、スクリプトエディタのGUI上でプロパティの値を操作したい場合はスクリプトプロパティを使用します。

コンテナバインドスクリプトでスクリプトエディタ上でプロパティの値を見せたくない場合にドキュメントプロパティを選択することになります。

以上から3つのプロパティサービスの使い分けのフローチャートは下記の通りです。

Google Apps Script(GAS)のスクリプトプロパティ、ユーザープロパティ、ドキュメントプロパティの使い分けフローチャート

このフローチャートに従うことで、3つのプロパティサービスの中から適切なプロパティを選択することができます。

いずれもPropertiesServiceで操作

プロパティサービス3種類のGoogle Apps Script(GAS)スクリプトからの操作はいずれもPropertiesServiceクラスを使用します。

PropertiesServiceクラスを使ったスクリプトプロパティ、ユーザープロパティ、ドキュメントプロパティの保存・取得の方法は以下の記事で解説しています。

なお、スクリプトプロパティに関してはGASスクリプトエディタのGUI操作も可能です。

スクリプトプロパティの場合は、スクリプトエディタの左メニュー「プロジェクトの設定」からスクリプトプロパティの項目で、キーと値を追加しましょう。

まとめ・終わりに

今回、Google Apps Script(GAS)で利用可能なプロパティサービス(プロパティストア)を紹介しました。

プロパティサービスには、スクリプトプロパティ、ユーザープロパティ、ドキュメントプロパティの3種類があります。

それぞれにプロパティのデータ格納先やスクリプトエディタで操作可能かなどで使い分けることができます。

最も利用頻度が高いのはスクリプトプロパティですが、他のGASスクリプト実行ユーザーに参照されたくない場合はユーザープロパティを使用しましょう。

また、スクリプトプロパティはGUI操作可能なものの、逆に格納データが見えるのがネックな場合は、ドキュメントプロパティがおすすめです。

GASに用意された3種類のプロパティサービスをうまく使い分けて、コーディングしましょう。