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

SNMPをみる

今回はネットワークがらみの話

 

ネットワークの状況監視に用いるプロトコルSNMPというものがあります。

 

SNMP(Simple Network Management Protocol)

ネットワーク機器の監視、制御を行うプロトコル。ポート番号は161,162を用いる。 

 このSNMPMacで確認する時は特に準備は必要ない(訳ではない)のですがwindowsで確認する時は色々と作業が必要なのでそのメモを

 

windowsコマンドプロンプト上でSNMPwalkをやるのに必要だった作業

  1. NET-SNMPの入手
  2. confの設定
  3. サービスの起動
  4. 実行

 

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上で実行した時の結果を確認することができます。

 

参考文献

TCP/IP - SNMPとは

www.eaton-daitron.jp

無線LANLAN LA LAN

あけまして自宅ネットワークの機器を更新

 

そんな話です。

 

うちで今使ってたルーターがめちゃめちゃ古いやつだったんですよね

BUFFALOのクソ古いやつです。

 

それを流石に使いすぎだろうと思い、半額出してもいいからそろそろ新しくしてくれと相談したところ新しくすることになりました。

 

と言うことで購入したのがこれでした

 

802.11ac使えるいい感じのやつ

なんでそれにしたかっていうと選択肢としてあげられた中だとそれが一番いいかなと感じたからですね(にしても実店舗よりアマゾンの方が安くねぇか)

 

自宅のネットワーク管理をやってるのが自分なのでまぁそれの設定をやってったわけなんですが

 

バッファロースイッチングハブをTVとブルーレイレコーダに繋いでたのですがそれがめんどくさかった

これがどうしてめんどくさかったかというとMacでのコントロールができないからでした。

それを設定し直すのにwindowsの端末にLANケーブルを用いて接続して、専用ソフトを起動して、入力して再起動かけて、、ってやる必要がありました(というかそういう操作ですることにたどり着くまで小一時間かかった、、

 

まぁ、何が言いたいかっていうと無線LANに関わる分野にもう少し統一規格を作って欲しいってことですね(?)多くのメーカーがそれぞれの機器同士の接続には簡単にできるように設計している分他のメーカーとの接続がめちゃくちゃめんどくさくなっているように感じます。そういった意味でも統一された操作方法ができればいいなぁと思いました。

 

//忙しくてかきかけのまま一週間寝かせてしまいかきたいことがかけてない気がする