GoogleAppScript開発の勘所

GASの簡単な概要と機能

まず初めにGASについて簡単にまとめておきます

  • 概要
    • 対応言語はjavascriptのみ
    • 無料
    • GCPのインスタンスと紐づいている
    • 各種Google系サービスとの連携や、クーロンで回せたり活用の幅はかなり広い
  • 機能
    • ブレイクポイント
    • ライブラリ化・インポート
    • クーロン
    • キャッシュ
    • Google系サービスとの連携

GASプロジェクトにおける4Tips

続いてはGASプロジェクトを開発する際有効なTips的なものを合計4つ紹介します

1. Claspでローカル開発

claspコマンドを使って行います。homebrewで導入可能です。

brew install clasp  

プロジェクト作成

clasp create  

ローカルデバッグ

clasp run <関数名>  

で指定した関数を実行することができる。便利

デプロイ

clasp push  

2. ライブラリ化

GASではrequireは使えませんが、GASプロジェクトをライブラリとして使用することはできます。メニューの「公開」→「実行可能なAPIとして公開」できます。よく使うコードや処理は共通化しておくと良いでしょう。また最近の仕様変更により実行可能なAPIとして公開するにはCloud Plat Fromと紐づける必要があるので注意

3. トリガー

GASプロジェクトはトリガーを設定できます。設定したトリガーの条件を満たすと自動的に実行されます。トリガーは次の二つに大別できます。

  • タイムトリガー(定期的に実行)
  • イベントトリガー(特定の処理が行われると実行)

主にルーティンワークを自動化したりするときなどに活躍するでしょう。

4. 便利な小技

・ファイル分割

おなじみのrequireは使えないがコードが長くなりすぎた場合、複数ファイルに分割することはできます。全て同じスコープのものとして扱われます。

//Code.gs  
const name = "ピカチュウ"  
function attack() {  
    Logger.log("ピカチューーーーーーー")  
}  
//SubCode.gs  
Logger.log(name)  //"ピカチュウ"  
attack() //"ピカチューーーーーー"  

・環境変数

「ファイル」→「プロジェクトのプロパティ」から追加できます。設定したプロパティは下のように取得できます。

const properties = PropertiesService.getScriptProperties();  
Logger.log(properties.getProperty('PROPERTY_NAME'));  

おまけ: よく使うサンプルコード集

ログ出力

デバッグする際はお馴染みのconsole.logではなく、Logger.logを使う

APIを叩く

gasではcurlが使えません。代わりにUrlFetchAppを使います。何かしらのクエリパラメーターを付与する際は、payloadというプロパティに格納します

function post() {    
    let params = {      
            "query1": "うぇーい",      
            "query2": 1  
    }   

    let options = {      
            "method" : "post",  
            "headers" : {   
                "Content-Type" : "application/json",      
            },      
            "payload" : JSON.stringify(params)  //ココ    
    };    

    var response = UrlFetchApp.fetch("https://sample.com/api", options);    
    Logger.log(response.toString());  
}  

キャッシュ

キャッシュも利用できます。次の三種類用意されています。

var docmentCache = CacheService.getDocumentCache();   //スクリプト毎  
var scriptCache = CacheService.getScriptCache();  //スクリプト実行毎  
var userCache = CacheServise.getUserCache();  //ユーザー毎  

キャッシュの操作

userCache.put("","")  //保存  
userCache.get()  //取り出し  
userCache.removeAll  //消去  

Google系サービスとの連携

const gSpreadsheet = SpreadsheetApp.openById("ID");  
const gCalender = CalendarApp.getCalendarById("ID");  

最後までご覧いただきありがとうございました

こっちは真面目に作ってます。笑

サクっとプログラミング

iOSアプリ開発のあれこれがまとまるwebサイト