
photo credit: Alfred Grupstra Heading For The Cheesy Parts via photopin (license)
みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
初心者向けのシリーズとしてGoogle Apps Scriptで名言Botの作り方を解説しております。
前回の記事はコチラ。

GASでコードにベタ書きしたくないデータを格納するためのプロパティストアについて解説をしました。
さて、今回はいよいよそのプロパティストアをGASから操作していきますよ。
ということで、Google Apps Scriptでスクリプトプロパティを取り出す方法です。
では、行ってみましょう!
作成する名言Botと前回までのおさらい
さて、まず作成したい名言Botですが、以下のスプレッドシートの名言を一つずつチャットワークに送るというものです。
それで、これまでで作成したスクリプトがコチラ。
function myFunction() { var sheet = SpreadsheetApp.getActiveSheet(); var lastRow = sheet.getLastRow(); for(var i = 2; i <= lastRow; i++) { if(!sheet.getRange(i, 4).getValue()){ var body = sheet.getRange(i, 1).getValue(); sendMessage(body); sheet.getRange(i, 4).setValue(true); break; } } if(i >= lastRow) { sheet.getRange(2, 4, lastRow - 1).clearContent(); } } function sendMessage(body){ var cw = ChatWorkClient.factory({token: 'ここにAPIトークンを入力してください'}); cw.sendMessageToMyChat(body); }
この20行目のところ、チャットワークのAPIトークンがコード内にベタ打ちになっていますので、これを「CW_TOKEN」というキーでスクリプトプロパティに保存をするところまで前回進めたわけです。
今回は、そのスクリプトプロパティに格納したデータを取り出して活用するように修正をしていきます。
プロパティストアを操作する
では、早速進めていきましょう。
これまでお伝えしてきたスプレッドシートを操作する機能は、Spreadsheetサービスでしたね。
GASではプロパティストアを扱うために、Propertiesサービスという機能が提供されています。
その機能を使って、スクリプトプロパティからデータを取り出す方法をお伝えしていきます。
グローバルオブジェクトPropertiesServiceとは
Propertiesサービスを使用する場合には、まずグローバルオブジェクトPropertiesServiceからアクセスをすることになります。
これがPropertiesサービスの最も上位にあるオブジェクトで、トップレベルの親分的なオブジェクトです。
スプレッドシートでいうと、SpreadsheetAppがそれに当たります。
スクリプトプロパティをPropertiesオブジェクトとして取得
プロパティストアはオブジェクトPropertiesとして取得することで操作ができます。
前回の記事でお伝えしたとおり、プロパティストアにはいくつかの種類がありますので、その種類ごとにメソッドが異なります。
スクリプトプロパティを操作するためのPropertiesオブジェクトを取得するには、getScriptPropertiesメソッドを使います。
プロパティストアからキーを指定して値を取り出す
これで、スクリプトプロパティをPropertiesオブジェクトとして操作ができるようになりましたので、そこからデータを取り出しましょう。
プロパティストアにはキーと値のセットで格納されていますので、キーを指定することで値を取り出すことができます。
そのためのメソッドがgetPropertyメソッドです。
書式はコチラです。
プロパティから値を取り出す例
例えば、以下のようなスクリプトを作りました。
function getProperty(){ var token = PropertiesService.getScriptProperties().getProperty('CW_TOKEN'); Logger.log(token); }
スクリプトプロパティにCW_TOKENというキーで値が正しく格納されていれば、その値がログ出力されるはずです。
試してみてください。
プロパティストアを使ったBotのスクリプト
以上を踏まえて、冒頭のBotのスクリプトを修正しましょう。
コチラです。
function myFunction() { var sheet = SpreadsheetApp.getActiveSheet(); var lastRow = sheet.getLastRow(); var token = PropertiesService.getScriptProperties().getProperty('CW_TOKEN'); for(var i = 2; i <= lastRow; i++) { if(!sheet.getRange(i, 4).getValue()){ var body = sheet.getRange(i, 1).getValue(); sendMessage(token, body); sheet.getRange(i, 4).setValue(true); break; } } if(i >= lastRow) { sheet.getRange(2, 4, lastRow - 1).clearContent(); } } function sendMessage(token, body){ var cw = ChatWorkClient.factory({token: token}); cw.sendMessageToMyChat(body); }
4行目がプロパティストアからチャットワークAPIトークンを取り出している部分ですね。
9行目で呼び出しているsendMessageですが、引数を一つ増やしてそのAPIトークンも渡すようにしました。
それを受け取ってChatWorkオブジェクトを作るのが21行目ですが、ここを仮引数tokenに置き換えることができるようになりました。
これで、コード内にAPIトークンをベタ打ちしなくて済むわけです。
まとめ
以上、GASでスクリプトプロパティを操作してそのデータを取り出す方法をお伝えしました。
これで、コードにAPIトークンをベタ打ちしなくて済みますね。コピペして使いまわしたいときにも安心です。
もう、Botとしては完成なのですが、次回以降、もう少し改善していきましょう。
どうぞお楽しみに!
連載目次:超初心者向けGASでBotを作りながら基礎を学ぶ
Google Apps Script(GAS)をはじめるためのメリットは山程ありますが、何を作ったらいいの?と悩んでしまうこともありますよね。そんな時に、おすすめしたいのが「Bot」の作成です。このシリーズでは、超初心者向けにGASでBotを作る方法を題材としながら、GASプログラミングの一通りの流れと書き方について学んでいきます。- 【初心者向けGAS】本当の最初の一歩!スクリプトエディタでプロジェクトを開く
- 【初心者向けGAS】はじめてのスクリプトを作成し、保存し、実行する
- 【初心者向けGAS】プログラミングに必須の変数の使い方とデータ型について
- 【初心者向けGAS】ログを表示するLogger.logの使い方
- 【初心者向けGAS】スクリプト実行時の「承認」でびっくりしないために
- 【初心者向けGAS】Spreadsheetサービスの「オブジェクト」の基礎の基礎を知ろう
- 【初心者向けGAS】スプレッドシートのシートを取得する2つの方法
- 【初心者向けGAS】スプレッドシートのセル・セル範囲とその値を取得する方法
- 【初心者向けGAS】 for文を使ったスプレッドシートの繰り返しの超基本
- 【初心者向けGAS】条件分岐をするif文の使い方の超基本
- 【初心者向けGAS】スプレッドシートのセルに値を入力する基礎の基礎
- 【初心者向けGAS】条件に応じてループを制御する2つの方法~break文とwhile文~
- 【初心者向けGAS】 スプレッドシートのセル範囲を行数・列数を使って取得する
- 【初心者向けGAS】スプレッドシートのセル範囲をクリアするいくつかの方法
- 【初心者向けGAS】 Google Apps ScriptでWeb APIを活用するための基礎知識
- 【初心者向けGAS】面倒なことはライブラリに任せよう!その概要と追加の方法
- 【初心者向けGAS】チャットワークのマイチャットにメッセージを送る最も簡単な例
- 【初心者向けGAS】Google Apps Scriptで別の関数を呼び出すfunctionの書き方
- 【初心者向けGAS】時限式のイベントトリガーを設置して決まった時刻にBotを送信する方法
- 【初心者向けGAS】 プロパティストアの概要とスクリプトプロパティの編集方法
- 【初心者向けGAS】スクリプトプロパティを操作してそのデータを取り出す方法