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サイトを参考にさせていただきました
SNMPをみる
今回はネットワークがらみの話
ネットワークの状況監視に用いるプロトコルにSNMPというものがあります。
SNMP(Simple Network Management Protocol)
ネットワーク機器の監視、制御を行うプロトコル。ポート番号は161,162を用いる。
このSNMPをMacで確認する時は特に準備は必要ない(訳ではない)のですがwindowsで確認する時は色々と作業が必要なのでそのメモを
windowsでコマンドプロンプト上でSNMPwalkをやるのに必要だった作業
- NET-SNMPの入手
- confの設定
- サービスの起動
- 実行
1.NET-SNMPの入手
https://sourceforge.net/projects/net-snmp/files/net-snmp%20binaries/5.5-binaries/ から使用するOSにあったものをダウンロード
そしてインストーラを起動して流れに沿ってインストールを行います。
2.confの設定
まずはインストールしたものが正常に動くか動作の確認を行うためにlocalhostでの調査を行うための設定を行います。ベースになるものはヘルプ内でsnmpd.confと検索するとEXAMPLE.win32というものが出てきます。
そこの本文がそのまま全てconfのベースになる文書になっています。それをコピーしてエディタに貼り付けます。
その中でホストに関わる情報を記述する部分を見つけてきて編集します。
L76:#sec.name source community
の下の2行に編集を行います。
今回はローカルでの動作確認を行うことを想定した設定を行いました。
L77:com2sec local localhost public
L78:com2sec mynetwork 0.0.0.0/0 public
書き換えたものを c/usr/etc/snmp/にsnmpd.confとして保存します。
以上でconfの設定は終了です。
3.サービスを起動
サービスを起動します。
スタート>プログラム>Net-SNMP>Service>Register Agent Serviceを管理者として実行
サービスを開始します
コントロールパネル>管理ツール>サービスを開く
サービス内にあるNet-SNMP Agentを起動
4.実行
コマンドプロンプトを起動してc:/usr/bin/に移動する
移動した先でsnmpwalk -v 1 -c public loaclhostを実行するとlocalhost上で実行した時の結果を確認することができます。
参考文献
無線LANLAN LA LAN
あけまして自宅ネットワークの機器を更新
そんな話です。
うちで今使ってたルーターがめちゃめちゃ古いやつだったんですよね
BUFFALOのクソ古いやつです。
それを流石に使いすぎだろうと思い、半額出してもいいからそろそろ新しくしてくれと相談したところ新しくすることになりました。
と言うことで購入したのがこれでした
802.11ac使えるいい感じのやつ
なんでそれにしたかっていうと選択肢としてあげられた中だとそれが一番いいかなと感じたからですね(にしても実店舗よりアマゾンの方が安くねぇか)
自宅のネットワーク管理をやってるのが自分なのでまぁそれの設定をやってったわけなんですが
バッファローのスイッチングハブをTVとブルーレイレコーダに繋いでたのですがそれがめんどくさかった
これがどうしてめんどくさかったかというとMacでのコントロールができないからでした。
それを設定し直すのにwindowsの端末にLANケーブルを用いて接続して、専用ソフトを起動して、入力して再起動かけて、、ってやる必要がありました(というかそういう操作ですることにたどり着くまで小一時間かかった、、
まぁ、何が言いたいかっていうと無線LANに関わる分野にもう少し統一規格を作って欲しいってことですね(?)多くのメーカーがそれぞれの機器同士の接続には簡単にできるように設計している分他のメーカーとの接続がめちゃくちゃめんどくさくなっているように感じます。そういった意味でも統一された操作方法ができればいいなぁと思いました。
//忙しくてかきかけのまま一週間寝かせてしまいかきたいことがかけてない気がする