Googleスプレッドシートでスクリプトを書いていると、スクリプト全体で共有するデータ保存場所としてScriptプロパティを使うことがあります。しかし、ファイルごとに個別のデータを持たせたい場合は、Documentプロパティが便利です。この記事では、Apps ScriptのDocumentプロパティを使ってスプレッドシート単位でデータを保存・取得する方法を解説します。具体的なコード例や注意点も紹介しますので、ぜひ参考にしてください。
【要点】Apps ScriptでDocumentプロパティを使うための3つのポイント
- PropertiesService.getDocumentProperties(): 現在のスプレッドシートに紐付いたプロパティオブジェクトを取得します。
- setProperty(key, value) と getProperty(key): キーと値のペアでデータを保存・取得します。
- deleteProperty(key) と getKeys(): 特定のプロパティを削除したり、全キーを一覧表示したりできます。
ADVERTISEMENT
目次
Documentプロパティの概要とその仕組み
Documentプロパティは、スプレッドシートファイルごとに独立したプロパティストアです。Scriptプロパティがスクリプト全体で共有されるのに対し、Documentプロパティはそのファイル内でのみ有効です。保存できるデータは文字列のみで、数値やオブジェクトを保存する場合はJSON文字列に変換する必要があります。最大容量は500KB程度で、ファイルのコピー時にはプロパティは引き継がれません。この仕組みにより、ファイル固有の設定や実行状態を安全に管理できます。
Documentプロパティを使用する手順
1. プロパティオブジェクトの取得
まずは、Documentプロパティを操作するためのオブジェクトを取得します。以下のコードをスクリプトエディタに記述してください。
function getDocProps() {
var props = PropertiesService.getDocumentProperties();
return props;
}
この関数を実行すると、現在のスプレッドシートに紐付いたプロパティオブジェクトが返ります。
2. データの保存(setProperty)
keyとvalueを指定してデータを保存します。valueは文字列でなければならないため、数値やオブジェクトはJSON.stringify()で変換します。
function saveData() {
var props = PropertiesService.getDocumentProperties();
props.setProperty('lastRun', new Date().toISOString());
props.setProperty('count', JSON.stringify(42));
props.setProperty('config', JSON.stringify({mode:'auto', interval:5}));
}
3. データの取得(getProperty)
保存したデータをkeyで取得します。オブジェクトの場合はJSON.parse()で戻します。
function loadData() {
var props = PropertiesService.getDocumentProperties();
var lastRun = props.getProperty('lastRun');
var count = JSON.parse(props.getProperty('count'));
var config = JSON.parse(props.getProperty('config'));
Logger.log('最終実行: ' + lastRun);
Logger.log('カウント: ' + count);
Logger.log('設定: ' + JSON.stringify(config));
}
4. データの削除(deleteProperty)
特定のkeyのデータを削除するにはdeletePropertyを使います。
function deleteData() {
var props = PropertiesService.getDocumentProperties();
props.deleteProperty('count');
}
5. 全キーの取得(getKeys)
保存されている全てのkeyを配列として取得できます。管理画面などで活用します。
function listKeys() {
var props = PropertiesService.getDocumentProperties();
var keys = props.getKeys();
Logger.log('保存キー一覧: ' + keys.join(', '));
}
Documentプロパティ使用時の注意点と制限
容量制限に注意する
Documentプロパティの最大容量は約500KBです。保存するデータ量が多いとエラーが発生します。大きなテキストや画像データは避け、軽量な設定値やフラグに限定してください。容量を超えた場合は古いデータを削除するか、別の保存方法を検討します。
データ型は文字列のみ
保存できる値は文字列だけです。数値やブール値、配列やオブジェクトを保存する場合はJSON.stringify()で文字列化し、取得時にJSON.parse()で戻す必要があります。boolean値を保存する場合は’true’や’false’の文字列として保存し、取得後に変換します。
スクリプトの権限とスコープ
Documentプロパティの読み書きには、スクリプトの実行権限が「現在のスプレッドシート」に対するものだけで済みます。Scriptプロパティよりも権限が限定されるため、他のファイルに影響を与えず安全です。ただし、トリガーを使用する場合はトリガー設定に注意してください。
ADVERTISEMENT
DocumentプロパティとScriptプロパティの比較
| 項目 | Documentプロパティ | Scriptプロパティ |
|---|---|---|
| 保存スコープ | ファイル単位 | スクリプト全体 |
| 最大容量 | 約500KB | 約500KB |
| 必要な権限 | ファイルへのアクセス権のみ | スクリプトの実行権限に依存 |
| 削除タイミング | ファイルをコピーしてもプロパティはコピーされない | スクリプトが削除されるまで保持 |
この表の通り、Documentプロパティはファイルに紐付くため、ファイルを複製してもデータは引き継がれません。一方、Scriptプロパティはスクリプト全体で共有されるため、複数のファイルから同じスクリプトを実行する場合に便利です。用途に応じて使い分けましょう。
Documentプロパティを使うと、Googleスプレッドシートファイルごとに独立したデータ保存が可能です。スクリプトでファイル固有の設定値や状態を保持したい場合に便利です。例えば、ユーザーごとの設定や前回実行時の状態を保存するのに活用できます。是非、あなたのスクリプトに取り入れてみてください。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
