Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

GASの新エディタでスクリプトのプロパティを確認・設定する方法

久しぶりにGASエディタを開いたら、エディタが刷新されて見やすくなっていた。デプロイボタンもヘッダーに移動されて、デプロイ操作がしやすくなって、関数の補完も強化、あるいは単に見やすくなった?みたい。
newUI.png

が、今までGUI上で設定してきた”プロパティ"(スクリプトに設定できる環境変数)の項目がいくら探しても見つからなかったので、とりあえずコード上で確認、変更する方法をまとめてみた。(もしGUI上で設定確認できる方法あれば教えていただきたいです!)

基本的に以下の公式ドキュメントを参考にした。
Properties Service
Class PropertiesService

書き込み

1つのプロパティを設定する: setProperty関数

  //スクリプトプロパティを取得
  const scriptProperties = PropertiesService.getScriptProperties();

  // 一つだけ設定
  scriptProperties.setProperty('Hoge', '一個だけ設定したよ');

複数のプロパティを一度に設定する: setProperties関数

  //スクリプトプロパティを取得
  const scriptProperties = PropertiesService.getScriptProperties();
 
 scriptProperties.setProperties({
    'Fuga1': '',
    'Fuga2': '',
    'Fuga3': ''
  });

読み出し

指定したプロパティを取得する:gerProperty関数

  //スクリプトプロパティを取得
  const scriptProperties = PropertiesService.getScriptProperties();

  //保存したHogeの値を取得
  const hoge = scriptProperties.getProperty('Hoge')

  Logger.log(hoge)

設定した全プロパティを取得する: getProperties関数

  //スクリプトプロパティを取得
  const scriptProperties = PropertiesService.getScriptProperties();

  //設定した全プロパティを取得する
  const data = scriptProperties.getProperties();
  for (var key in data) {
    Logger.log('キー: %s, 値: %s', key, data[key]);
  }

削除

指定したプロパティを削除する: deleteProperty関数

  //スクリプトプロパティを取得
  const scriptProperties = PropertiesService.getScriptProperties();

  //指定したプロパティHogeを削除
  const hoge = scriptProperties.deleteProperty('Hoge')

設定した全プロパティを削除する: deleteAllProperties関数

  //スクリプトプロパティを取得
  const scriptProperties = PropertiesService.getScriptProperties();

  //設定されている全プロパティを削除
  scriptProperties.deleteAllProperties();

おわりに

実際の運用としては、アプリケーション本体のスクリプトは環境によらず同じものにしたいと思うので、エディタ上で環境変数設定用のファイルを環境ごとに作るのがいいと思います。
そこに環境変数設定用の処理を記述して、エディタ上で実行して設定していくのが良いかなと思います。

iron-smri
機械工学科出身、マイコン・WindowsプログラミングからWebプログラミングへ。コスト0でなんでも作れるの楽しい。 某Saasプロダクトから現在は広告配信事業へ。 Elm, Javascript(React,React Native),Ruby,Python, AWS,GCP
fringe81
Fringeは、最新のテクノロジーとプロフェッショナルによるサービスにより、社会課題に仮説を立てて市場に広げていくことで、数十年という長期的なスパンで価値を生み出し続け、より良い世界を創る集団です。 既存の領域に限らず、時流を読み、仮説を生み出し、テクノロジーの力で優れたサービスを生み出し続けます。
https://www.fringe81.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away