【GAS】スクリプトプロパティがGUIで確認できないのでJSONに入れることにした

872 語
4 分
【GAS】スクリプトプロパティがGUIで確認できないのでJSONに入れることにした

はじまり#

リサちゃん avatar
リサちゃん
スクリプトプロパティが見えない・・・。
135ml avatar
135ml
格納の仕方を変えねばな。

Google Apps Scriptでスクリプトプロパティが見えない#

Google Apps Script(以下、GAS)のエディターでは、1プロジェクトにつき、スクリプトプロパティの数が50以上になると、51個目以降のスクリプトプロパティをGUI上で確認できなくなります。

スクリプトに50を超えるプロパティが含まれています。上のリストには最初の50個のみが表示されており、読み取り専用です。 すべてのプロパティを管理または表示するには、プロパティサービスを使用してプログラムを使って行います。

一応、PropertiesService.getScriptProperties()を実行して、console.log()とかをすれば表示できないことはありません。そして、Properties.setProperty(key, value)をすればプロパティを編集することは可能ですが、やはりGUI上で表示して編集する方が楽ではあります。

この事態を打開するためには、スクリプトプロパティの個数を減らすしかありません。そのため今回は、ID とパスワードを JSON にまとめてスクリプトプロパティに入れるようにしていきたいと思います。

スクリプトプロパティをJSONにする処理#

このようなコードで、スクリプトプロパティをJSONにする処理を実装できます。getConfig()関数でJSON文字列をパースして設定オブジェクトを取得し、setConfig()関数で設定オブジェクトをJSON文字列に変換して保存しています。

// プロパティのキー
const CONFIG_KEY = 'myConfig';
// プロパティの値(JSON)から設定オブジェクトの取得
function getConfig() {
const configJson = PropertiesService.getScriptProperties().getProperty(CONFIG_KEY);
return configJson ? JSON.parse(configJson) : {};
}
// プロパティに設定オブジェクトの値(JSON)の保存
function setConfig(config) {
const configJson = JSON.stringify(config);
PropertiesService.getScriptProperties().setProperty(CONFIG_KEY, configJson);
}
// 使用例
function test() {
let config = getConfig();
// 設定値の取得
Logger.log(config.apiUrl);
// 設定値の更新
config.apiUrl = 'https://newapi.example.com';
config.apiKey = 'abcdef123456';
// 設定値の保存
setConfig(config);
// 確認
config = getConfig();
Logger.log(config.apiUrl);
Logger.log(config.apiKey);
}

上記の実装で格納したmyConfigというキーのスクリプトプロパティは、プロパティストアを開くとJSON形式でそのキーに対する設定が確認できるようになります。

JSONなので、階層が深くなったり、構造に非対称性が出てくると編集しにくくなりそうですが、1層か2層ぐらいしか無いJSONであれば、手作業でも編集出来ないことは無さそうです。

こんな風に沢山フィールドがあったり、ネストの深さが一律で無かったりすると編集は大変そうですが・・・、

{
"myScript_01": {
"apiUrl": "https://api.example.com",
"apiKey": "1234567890abcdef",
"userSettings": {
"notification": true,
"language": "ja"
}
}, "myScript_02": {
"apiUrl": "https://api.example.com",
"apiKey": "1234567890abcdef",
"userSettings": {
"notification": true,
"language": "ja"
}
}
}

こんな風にフィールドが横並びであれば、何だか編集できそうな気がします。

{
"myScript_01": {
"apiUrl": "https://api.example.com",
"apiKey": "1234567890abcdef"
}, "myScript_02": {
"apiUrl": "https://api.example.com",
"apiKey": "1234567890abcdef"
}, "myScript_03": {
"apiUrl": "https://api.example.com",
"apiKey": "1234567890abcdef"
}, "myScript_04": {
"apiUrl": "https://api.example.com",
"apiKey": "1234567890abcdef"
}, "myScript_05": {
"apiUrl": "https://api.example.com",
"apiKey": "1234567890abcdef"
}, "myScript_06": {
"apiUrl": "https://api.example.com",
"apiKey": "1234567890abcdef"
}
}

そして、このようにJSONで格納することによって、「スクリプトプロパティを編集」ボタンをクリックすることで、再びエディタ上でプロパティを閲覧および編集できるようになりました。

まとめ#

今回は、GASのエディターでスクリプトプロパティを全て表示するために、プロパティの値をJSONで格納する実装に関して紹介しました。これで、スクリプトプロパティが多く必要なプロジェクトでも、そのプロパティの編集作業の時間を短縮することが出来るかもしれません。

おしまい#

リサちゃん avatar
リサちゃん
見えるようになったあ!
135ml avatar
135ml
久しぶりに見たなこの光景。

以上になります!

記事を共有

この記事が役に立ったなら、ぜひ他の人と共有してください!

【GAS】スクリプトプロパティがGUIで確認できないのでJSONに入れることにした
https://endorphinbath.com/posts/gas-scriptpropertis-holding-json/
著者
kinkinbeer135ml
公開日
2024-11-05
ライセンス
CC BY-NC-SA 4.0
関連記事 スマート
1
【GAS】「承認が必要です:このプロジェクトがあなたのデータへのアクセス権限を必要としています。」の表示工程を省くようにするスコープ設定
Code GAS実行時のOAuth承認プロセスを省くために必要なappsscript.jsonのスコープ設定について紹介します。
2
【GAS】Google Apps Scriptで作った自作関数に対してテストコードを書けるライブラリ「TestGAS」を作りました!
Code Google Apps Scriptで作った関数に対して、テストコードを使って動作を検証するためのツール「TestGAS」を作成および公開しました。初めて作ったテストツールですが、個人的にかなり便利なものになったので、ぜひ使ってみて下さい。
3
【GAS】「Exception: Invalid argument: id」が出た時の対処方法
Code Google Apps Scriptで開発を行っている際に、たまに遭遇するエラー文です。シートとかファイルのオブジェクトに関係してきます。
4
【GAS】「We're sorry, a server error occurred while reading from storage. Error code NOT_FOUND.」というエラーメッセージが出てきた時。
Code Google Apps Scriptを使用した時に、「Error code NOT_FOUND」エラーに直面したときの体験談になります。
5
【GAS】クラスを作って外部ライブラリとして呼び出したい場合は、ファクトリメソッドを作ろう
Code Google Apps Scriptで、ライブラリ化したクラスメソッドを外部のライブラリから呼べなくなってしまっている場合に、「ファクトリメソッド」を使って解決するかもしれません。本記事の方法をお試し下さい。
ランダム記事 ランダム
Profile Image of the Author
kinkinbeer135ml
SIerをやめて、プログラミングを勉強しています。※Amazonアソシエイトに参加しています。
お知らせ
私のブログへようこそ!これはサンプルのお知らせです。
音楽
カバー

音楽

再生中なし

0:00 0:00
歌詞なし
カテゴリ
タグ
サイト統計
記事
287
カテゴリー
8
タグ
93
総文字数
486,174
運用日数
0
最終活動
0 日前

目次