Google Apps Scriptやってみた
忙しい感
書きかけのエントリを下書き保存せずにウィンドウを閉じてテンションが下がってました
Google Apps Scriptを触ってみたので雑記
1.そもそもGoogle Apps Scriptとは
詳しくは上記リンクを参照してもらえればと思いますが、ざっと説明
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で解決できないだろうか
↓
イマイチだったしプログラムを作ろう
制作の流れ
- formを作る
- フォームの結果を受けるsheetを作成
- 作成したsheet上にスクリプトを記述
- 結果をメール送信
今回の制作では3までの制作は完了したのでそこまでについてまとめます。
作ってみよう
1.Formを作る
まずはフォームを作ります。(今回のエントリはその先の話がメインなのでそこらへんは省略します)
2.sheetを作る
フォームの結果を受けるsheetを作ります。(これもフォームのところからチョチョっとやるとできるので省略)
3.スクリプトを記述
ここがメインなのでここはちょっと詳細まで書きます
3.1スプレッドシートに関連づけ
前の段階で作成したsheetを開きます。
開いたらツール>スクリプトエディタを開きます。
これで、sheetと関連づけのされたスクリプトを製作することができます。
3.2世界に挨拶してみる
まずは練習
GASではアウトプットする対象を色々選べるのですが、とりあえずlogに出してみます
ということでサンプルとして以下のようなコードを書きました
Logger.logでlogとしてアウトプットすることができます。
これを保存して実行すると以下のようになります
これで挨拶は完了
-----------------------------------------------------------------
この先の話に入る前にこれからやることをまとめておきます
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(/*アウトプットの内容*/);
これでできます。
ちなみに今回作成したスクリプトで実行した結果
実行時に表示対象になるデータがなかったのでこの画像では時刻情報とtotalの0表示のみです
これがsheetを開いているウィンドウ上に表示されます
といった感じで初めてのGoogle Apps Scriptでした
--------------------------------------------------------
参考資料(一部)
その他多くのwebサイトを参考にさせていただきました