元建築系エンジニアのBLOG

ゼネコン退職して、クラウドエンジニアやってます。

読んでみた(詳解! Google Apps Script完全入門 [第3版])Part2

はじめに

Part1に続いて、GAS本格入門を読んだので、まとめてみました。

Part1では、GASの基礎のキソや、JavaScriptに依る基本機能についてです。。
今回のPart2では、Googleサービスとの連携に関する詳細機能についてまとめます。

第8章:SpreadSheet(SS)

  • SSの各クラスは以下の階層構造になっている
    1. SpreadSheetApp
    2. SpreadSheet
    3. Sheet
    4. Range
  • getActiveSS/Sheet/Rangeで、対象をセットする。
    ただし、GASは実行時間が遅い既知の事実があります。
    そのためコンテナバインド型の場合には、
    SSAppクラスとSSクラスを順々に読まずに、getActiveSheet()をそのままセットすることで効率的に実行できる。
  • SSに限らずサービスでは、URLがあれば、そこからIDを取得できる
  • 表の利用はできるだけA1セルから使うのが良い
    (getRangeする時のための読み込み効率化)
  • 値の設定
    • setValues:値を書き込む
    • setFormula:数式を書き込む
  • GASで作成した関数をSSからコールして利用することができる
    (※その際は大文字で表記する)

第10章:GoogleDrive(GD)

  • GDの各クラスは以下の階層構造になっている
    1. DriveApp
    2. Folder
    3. File
  • 上記以外に反復処理用に、
    FolderIteratorとFileItaratorが存在する。
  • フォルダ/ファイルを以下の条件で検索して取得することができる
    • title
    • parents:親フォルダのフォルダID
  • メールアドレスをキーとして、
    指定のドライブにおけるフォルダ/ファイルに対して、アクセス権付与ができる。
    • FileObject.addEditor
    • FolderObject.addEditor

第16章:Baseサービス

  • console、logger、Browserなどの基本機能を受け持つクラスが用意されている。

    • logger :Pythonと同じ(log、info、warn、error)
    • User、Session:アカウント情報などを取得できる

第17章:ユーザーインターフェース

  • SSでも、getUiすることで、alertメソッドが利用できる。
    • つまり、ダイアログ表示が簡易的に実現できる
    • 「はい/いいえ」「OK/キャンセル」などボタン埋め込みもできる
    • 入力ボックスも作れる

第18章:

  • 論理

第19章:

  • 論理

第20章:

  • プロパティには3種類ある
    • スクリプトプロパティ
    • ユーザープロパティ
      • アカウントやメールアドレスなどの、ユーザー単位の情報
    • ドキュメントプロパティ
  • プロパティの設定例
    • const xxxProperties = PropertiesService.getXxxProperties();
      xxxProperties.setProperties = {"key": "value"};

第21章:

  • SciprtIDは、コンテナバインド型であることから、
    設定ファイルでの管理ではなく、ScriptAppクラスを定義したのちに、getScriptIdするのが良い。

第22章:外部サイトへのアクセス

  • Url Fetchサービスで、HTTPリクエストの送信やHTTPレスポンスを解析することができる。
    • UrlFetchApp:送信クラス
    • HttpResponse:解析クラス
  • 以下のfetchメソッドを使い分ける
    • fetch:Return=HttpResponse
    • fetchAll:Return=HttpResponse[]
    • getRequest:Return=リクエストを示すObject
  • HttpResponseクラスに対しては、以下のメソッドが利用できる
    • getResponseCode()

第23章:ライブラリ

  • 論理

その他

  • コンテナバインド式なので、SSAppではなく直でgetActiveSheet()する。
  • フォルダ/SSへのアクセス権限付与も合わせて行う。
  • appscript.json
    • TIMEZONEを付与すること。