LANG SELRCT

コードを書く場所についてはこちら

2017年10月15日日曜日

PropertiesServiceにデータを保存して次回実行時に読み込む

スクリプトファイルにデータを保存して
次回スクリプトを実行した時にそれを読み込むということをやってみます
The code below means "Use PropertiesService to store data and load them at next execution".


データをkey:valueのセットで保存する
setProperties({key: value})


次回読み込む時にkeyを指定してvalueを取得する
getProperty(key)


データを削除する場合は
deleteAllProperties()


以下のコード.gsは
スクリプトを実行する度にCountの数字が1増えていくコードの例です

まずset_UserProperties()を実行して初期データを保存する
get_UserProperties()を実行して保存されているデータを取得する
そしてnumに+1して保存してログに出す
ということをやっています

get_UserProperties()を実行する度にnumが1増えていきます


コード.gs
var UserProperties = PropertiesService.getUserProperties();

function set_UserProperties() {
  var num = UserProperties.getProperty('Count');
  if (num == null) {
    var num = 0;
  }
  UserProperties.setProperties({
    'Text': 'ユーザプロパティ',
    'Count': num
  });
}

function get_UserProperties() {
  var num = UserProperties.getProperty('Count');
  var text = UserProperties.getProperty('Text');
  num = parseInt(num) + 1;
  UserProperties.setProperties({
    'Count': num
  });
  Logger.log([text, num]);
}

function delete_properties() {
  UserProperties.deleteAllProperties();
}
意訳.gs
UserPropertiesを取得する

この処理は以下を実行する
UserPropertiesからCountの値を取得してnumに入れる
もしnumがnullなら(初回は何も入っていないのでnullになる)
numに0を入れる

UserPropertiesに以下を保存する
Textに'ユーザプロパティ'というテキストを入れる(任意の文字列)
Countにnumを入れる(初回の場合は上のif文で0が入り、次回以降はget_UserProperties()で+1された値が入る)



この処理は以下を実行する
UserPropertiesからCountの値を取得してnumに入れる
UserPropertiesからTextの値を取得してtextに入れる
num に1を足す
UserPropertiesに以下を保存する
Countにnumを入れる

ログにtextとnumを出す


この処理は以下を実行する
UserPropertiesに保存されているデータを削除する




実行手順

1. set_UserProperties()を実行します
 run set_UserProperties()

 Textにはユーザプロパティという文字列が保存されます
 初回はnumがnullなのでCountには0が保存されます

2. get_UserProperties()を実行します
 run get_UserProperties()

 前回setされたnumに+1して保存します
 ログにtextとnumが出力されます
 実行結果:[ユーザープロパティ, 1.0]
3. 再度get_UserProperties()を実行します
 run get_UserProperties() again

 numに+1して保存されます
 ログにtextとnumが出力されます
 実行結果:[ユーザープロパティ, 2.0]
4. delete_properties()を実行すると、保存されたデータが削除されます
 run delete_properties() to delete all properties



ScriptPropertiesにtokenを保存して読み込む場合はこんな感じで

コード.gs
function get_token() {
  return PropertiesService.getScriptProperties().getProperty('token')
}


参考サイト
https://developers.google.com/apps-script/reference/properties/