Google Apps Scriptやってみた

忙しい感

 

書きかけのエントリを下書き保存せずにウィンドウを閉じてテンションが下がってました

 

Google Apps Scriptを触ってみたので雑記

 

1.そもそもGoogle Apps Scriptとは

developers.google.com

詳しくは上記リンクを参照してもらえればと思いますが、ざっと説明

Many Google apps, one platform in the cloud

 "GoogleのAppをクラウド上の1つのプラットフォームで"

 

Increase the power of your favorite Google apps — like Calender, Docs, Drive, Gmail, Sheets, and Slides.
Apps Script lets you do more with Google. All on a JavaScript platform in the cloud.

"Calender,Docs,Drive,Gmail,sheets,slidesのようなGoogleのappをより強力に

Apps Scriptでより多くのことをGoogle上で

全てはクラウドJavaScriptプラットフォームで"

 って感じ

簡潔にまとめると「JavaScriptベースでGoogleのAppを活用できるScript」

ちなみに、略称はGAS

 

2.何をしたのか

ちなみに現時点(2018/04/28時点)で最終目標まで辿り着いているわけではありません。

目的

GoogleFormの回答状況をメールに流したい

背景

毎時間の運用状況の集計、報告を行う

毎回テンプレのないように書くのがめんどくさい

IFTTTで解決できないだろうか

イマイチだったしプログラムを作ろう

 

制作の流れ

  1. formを作る
  2. フォームの結果を受けるsheetを作成
  3. 作成したsheet上にスクリプトを記述
  4. 結果をメール送信

今回の制作では3までの制作は完了したのでそこまでについてまとめます。

 

作ってみよう

1.Formを作る

まずはフォームを作ります。(今回のエントリはその先の話がメインなのでそこらへんは省略します)

2.sheetを作る

フォームの結果を受けるsheetを作ります。(これもフォームのところからチョチョっとやるとできるので省略)

3.スクリプトを記述

ここがメインなのでここはちょっと詳細まで書きます

  3.1スプレッドシートに関連づけ

前の段階で作成したsheetを開きます。

開いたらツール>スクリプトエディタを開きます。

これで、sheetと関連づけのされたスクリプトを製作することができます。

 

  3.2世界に挨拶してみる

まずは練習

GASではアウトプットする対象を色々選べるのですが、とりあえずlogに出してみます

ということでサンプルとして以下のようなコードを書きました

f:id:poolbooyer:20180502130417p:plain

Logger.logでlogとしてアウトプットすることができます。

これを保存して実行すると以下のようになります

f:id:poolbooyer:20180502130713p:plain

これで挨拶は完了

 

-----------------------------------------------------------------

この先の話に入る前にこれからやることをまとめておきます

1.Sheetのデータをスクリプトで配列に格納する

2.出力処理

------------------------------------------------------------------

  3.3 Sheetのデータをスクリプトで配列に格納する

こんなコードを書くことで実装できます

//sheetにActiveなシートの情報を取得

var sheet = SpreadsheetApp.getActiveSheet();

//lastRowにRowの要素数を取得
var lastRow = sheet.getLastRow();

//lastColにColumnの要素数を取得
var lastCol = sheet.getLastColumn();

//getRangeの引数で指定された範囲を選択

//sortの引数になっているcolumnをキーにしてソート

sheet.getRange(1,1, lastRow, lastCol).sort(3); 

このコードをsheetと関連付けをしたスクリプト上で実行するとシートのデータが3列をキーにしてソートされます。

//formから生成されるsheetは基本的に一番最初の行に要素の内容を説明するものが自動で記述されますが、それは基本的に最下段に行きます

  3.3 ポップアップで出力する

処理数的にはもうちょっと色々やってますが、基本的に他の言語と変わらないので特徴がある部分のみのまとめということでポップアップして出力する所のメモ

Browser.msgBox(/*アウトプットの内容*/); 

これでできます。

ちなみに今回作成したスクリプトで実行した結果

f:id:poolbooyer:20180502134451p:plain

実行時に表示対象になるデータがなかったのでこの画像では時刻情報とtotalの0表示のみです

これがsheetを開いているウィンドウ上に表示されます

 

 

といった感じで初めてのGoogle Apps Scriptでした

--------------------------------------------------------

参考資料(一部)

その他多くのwebサイトを参考にさせていただきました

www.atmarkit.co.jp

 

tonari-it.com