Google Apps Script

【GAS】APIキーのベタ書きは卒業!スクリプトプロパティで機密情報と設定値を安全に管理する完全ガイド

スポンサーリンク

Google Apps Script(GAS)でSlack通知やAPI連携ツールを開発している時、「APIキーやトークンをソースコードに直接書くのはセキュリティ的に不安だ…」と感じたことはありませんか?
あるいは、スプレッドシートIDのような設定値が変わるたびにコードのあちこちを修正する作業にうんざりしていないでしょうか。

このようなハードコーディングによる悩みは、GASに標準で備わっている「スクリプトプロパティ」を使えば、スマートに解決できます。

この記事では、プログラミング初心者の方からチーム開発のリーダーまで誰もがすぐに実践できるスクリプトプロパティの使い方を、設定画面の操作から具体的なコード例、実践的な活用シナリオまで、徹底的に解説します。
この記事を読めば、あなたのGASコードはもっと安全で、メンテナンスしやすいものに生まれ変わります。


  1. GASのスクリプトプロパティとは?コード管理を劇的に改善する機能
    1. そもそもスクリプトプロパティって何?
    2. なぜ使うべき?4つの大きなメリット
      1. メリット1:セキュリティの向上
      2. メリット2:メンテナンス性の飛躍的向上
      3. メリット3:設定の共有と標準化
      4. メリット4:手軽なデータ保存場所として
  2. 【初心者向け】まずはGUIで!スクリプトプロパティの基本的な使い方
      1. 手順1:プロジェクトの設定画面を開く
      2. 手順2:「スクリプトプロパティを追加」ボタンで値を設定する
      3. 手順3:設定した値の編集と削除
  3. 【コピペOK】GASコードでスクリプトプロパティを自在に操る
    1. 1件のプロパティを取得する (getProperty)
    2. 全てのプロパティをまとめて取得する (getProperties)
    3. プロパティを設定・更新する (setProperty, setProperties)
    4. プロパティを削除する (`deleteProperty`, `deleteAllProperties`)
  4. 【実践】これでもう迷わない!スクリプトプロパティ活用シナリオ4選
    1. シナリオ1:APIキーやトークンなど機密情報の管理
    2. シナリオ2:スプレッドシートIDなど変更が多い設定値の管理
    3. シナリオ3:スクリプトの最終実行日時や処理済みIDを記録する
    4. シナリオ4:開発環境と本番環境で設定を切り替える
  5. よくある質問(FAQ)
  6. まとめ:スクリプトプロパティを制して、ワンランク上のGAS開発者へ

GASのスクリプトプロパティとは?コード管理を劇的に改善する機能

そもそもスクリプトプロパティって何?

GASのスクリプトプロパティとは、GASプロジェクト専用の、キーと値のペアでデータを保存できるシンプルな仕組みのことです。
サーバーサイドで安全に管理されるため、機密情報をコードから切り離して保存するのに最適です。

他のプログラミング言語の経験がある方なら、「環境変数」や「.envファイル」のような役割を担う機能だとイメージすると分かりやすいでしょう。

なぜ使うべき?4つの大きなメリット

スクリプトプロパティの導入は、少しの手間で大きなメリットをもたらします。

メリット1:セキュリティの向上

APIキーやパスワードといった機密情報をコードから完全に分離できます。
万が一コードが漏洩しても、重要な情報が盗まれるリスクを大幅に低減します。

メリット2:メンテナンス性の飛躍的向上

スプレッドシートIDやメールアドレスなど、変更の可能性がある設定値を一元管理できます。
ハードコーディングをやめることで、修正はプロパティの値を1箇所変更するだけで完了し、手間とミスを劇的に削減できます。

メリット3:設定の共有と標準化

チーム開発において、設定値の管理方法を統一できます。
「この設定はあのグローバル変数、こっちの設定はコードの200行目…」といった属人化を防ぎ、誰が見ても分かりやすい構成を保てます。

メリット4:手軽なデータ保存場所として

スクリプトの最終実行日時や処理したIDの記録など、ちょっとしたデータを保存したい場合にわざわざスプレッドシートを用意することなく永続化できます。


【初心者向け】まずはGUIで!スクリプトプロパティの基本的な使い方

プログラミングに慣れていない方でも大丈夫です。
まずはクリック操作だけで設定する方法を覚えましょう。

手順1:プロジェクトの設定画面を開く

GASのエディタを開き左側のメニューにある、歯車のアイコンの「プロジェクトの設定」をクリックします。

手順2:「スクリプトプロパティを追加」ボタンで値を設定する

画面を一番下までスクロールすると、「スクリプト プロパティ」のセクションがあります。「スクリプト プロパティを追加」ボタンをクリックしてください。

「プロパティ」にキー(例: SLACK_API_TOKEN)を、「値」に実際のトークン(例: xoxb-xxxxxxxxxx)を入力し、「スクリプト プロパティを保存」ボタンをクリックします。

手順3:設定した値の編集と削除

設定済みのプロパティは、いつでも編集・削除が可能です。
値を変更したい場合は鉛筆アイコンを、削除したい場合はゴミ箱アイコンをクリックします。
操作は非常に直感的です。


【コピペOK】GASコードでスクリプトプロパティを自在に操る

GUIで設定した値は、PropertiesServiceクラスを使ってコードから呼び出します。ここでは、基本的な操作のサンプルコードを紹介します。

より詳しい仕様については、公式ドキュメントも参考にしてください。

1件のプロパティを取得する (getProperty)

指定したキー(プロパティ)の値を取得する、最も基本的なコードです。

function getMyApiKey() {
  const apiKey = PropertiesService.getScriptProperties().getProperty("SLACK_API_TOKEN");
  Logger.log(apiKey); // 設定したAPIキー(xoxb-xxxxxxxxxx)がログに出力される
}

全てのプロパティをまとめて取得する (getProperties)

設定されている全てのキーと値のペアを、まとめてオブジェクトとして取得します。どんな設定があるか一覧で確認したい場合に便利です。

function showAllProperties() {
  const allProps = PropertiesService.getScriptProperties().getProperties();
  for (const key in allProps) {
    Logger.log(`キー: ${key}, 値: ${allProps[key]}`);
  }
}

プロパティを設定・更新する (setProperty, setProperties)

コードの実行中に、動的にプロパティを設定したり、値を更新したりすることも可能です。

function setMyProperty() {
// 1件だけ設定(最終実行日時を記録する例)
PropertiesService.getScriptProperties().setProperty("LAST_EXECUTION_DATE", new Date());

// 複数まとめて設定(対象シートIDと管理者メアドを設定する例)
PropertiesService.getScriptProperties().setProperties({
"TARGET_SHEET_ID": "シートのID",
"ADMIN_EMAIL": "admin@example.com"
});
}

プロパティを削除する (`deleteProperty`, `deleteAllProperties`)

不要になったプロパティは、キーを指定して個別に削除したり、全てまとめて削除したりできます。

function deleteMyProperty() {
  // "ADMIN_EMAIL"というキーのプロパティを1件削除
  PropertiesService.getScriptProperties().deleteProperty("ADMIN_EMAIL"

  // 全てのプロパティを削除(取扱注意!)
  // PropertiesService.getScriptProperties().deleteAllProperties();
}

【実践】これでもう迷わない!スクリプトプロパティ活用シナリオ4選

理論は分かったけれど、具体的にどう使えばいいの?という疑問に、具体的なシナリオでお答えします。

シナリオ1:APIキーやトークンなど機密情報の管理

Slack、LINE、Chatwork、その他外部サービスのAPIキーやシークレットキーを保存します。
これでコードをGitHubなどで共有しても、最も重要な機密情報を安全に保てます。
まさに「GAS APIキー 隠す」を実現する方法です。

シナリオ2:スプレッドシートIDなど変更が多い設定値の管理

「こっちのシートでも同じ処理をしたい」といった要望にも、コードを一切触らず、プロジェクト設定画面でプロパティの値を変更するだけで対応できます。
メンテナンス性が劇的に向上します。

シナリオ3:スクリプトの最終実行日時や処理済みIDを記録する

定期実行するスクリプトで、「前回処理したメールのID」などを保存しておけば、「前回処理した続きからスタートする」といった重複処理を防ぐ制御が可能になります。
スプレッドシートに書き出すよりスマートで高速です。

シナリオ4:開発環境と本番環境で設定を切り替える

switch文などと組み合わせ、特定のプロパティ(例: ENV_MODE)の値が”PRODUCTION”か”DEVELOPMENT”かによって、本番用IDとテスト用IDを切り替えるといった、チーム開発で役立つ高度な設定管理も実現できます。

よくある質問(FAQ)

Q
グローバル変数で定数を定義するのと、どう違うのですか?
A

グローバル変数はコード内に記述するため、APIキーのような機密情報の管理には不向きです。
また、誰でもコードを編集できる環境では意図せず書き換えられるリスクがあります。
スクリプトプロパティはコードと完全に分離して安全に管理できる点、GUIで非エンジニアでも編集できる点が大きな違いです。

Q
User PropertiesやDocument Propertiesとの違いは何ですか?
A

Script Propertiesは、そのスクリプトに対して1つの値を共有します(今回解説したもの)。
User Propertiesは、スクリプトを実行する”ユーザーごと”に異なる値を保存します。Document Propertiesは、そのスクリプトが紐づく”ドキュメントごと”に値を保存します。
用途に応じて使い分けが必要です。

Q
他の言語で使う.envファイルのように利用できますか?
A

はい、まさにそのような用途で利用できます。
GASプロジェクトにおける「.envファイル」の役割を果たすのがスクリプトプロパティだと考えて問題ありません。


まとめ:スクリプトプロパティを制して、ワンランク上のGAS開発者へ

今回は、GASのスクリプトプロパティについて、基本的な使い方からチーム開発で役立つベストプラクティスまでを解説しました。

最後に要点をまとめます。

  • APIキーやトークンなどの機密情報は、必ずスクリプトプロパティで管理する
  • スプレッドシートIDなど変更の可能性がある値は、ハードコーディングせずプロパティ化する
  • プロパティの操作にはPropertiesServiceクラスを使用する
  • GUIとコードからの操作、両方を使いこなせるとさらに便利

スクリプトプロパティを使いこなすことは、コードのセキュリティとメンテナンス性を向上させ、将来の自分やチームメンバーを助けることに繋がります。

さっそく、あなたのGASプロジェクトに眠っている「ハードコーディングされた値」を、スクリプトプロパティに移行してみましょう!

タイトルとURLをコピーしました