自動化厨のプログラミングメモブログ │ CODE:LIFE

Python/ExcelVBA/JavaScript/Raspberry Piなどで色んなことを自動化

Slackのログ(JSONファイル)をExcel PowerQuery だけでなるべく楽に解析

Slackのログを分析するときは管理画面から一括ダウンロードするのが早い。しかし、出てくるデータはチャンネルごとにフォルダがバラバラかつ日付ごとにバラバラのJSONファイルとして出てくる。

CSVならあまり頭を使わなくてもそのまま開いたり、日付ごとのファイルでもbatで統合するなりすればいいがJSONファイルをExcelで扱うにはPowerQueryが最適VBA-JSONを使う手もあるが、初心者向けではない。


手順概要

  1. Slackからごそっとデータをダウンロード
  2. ZIPファイルを解凍
  3. Excel のデータタブでデータの取得→ファイルから→フォルダから
  4. 自動生成された関数を手直し
  5. シートに読み込む

 

1. Slackからごそっとデータをダウンロード

Slackの管理画面https://<ワークスペース名>.slack.com/admin/settings にアクセスし、画面右上の「データのインポート/エクスポート」をクリック。

f:id:maru0014:20200912123159p:plain  

続きを読む

Google Home と IFTTT を使って忘れ物チェック機能を作る

Google Home 便利ですが、その機能をフル活用出来ず眠ったままになっている人も多いハズ。

「色々できるようにするにはIoT対応の家電を買ったり、プログラムを書いたり、サーバを作ったりが必要なんでしょ?」と思うかもしれませんが、単体でも出来ることの幅をグッと広げてくれる超便利なツールがあります(無料で)


無料のiPaaS IFTTT

IFTTT
IFTTT

IFTTT(イフト)は いろいろなクラウドサービスの機能を繋げてくれる”ハブ”ツールです。

その利用方法の一例を上げると以下のようなことができます。

  • スマホのGPSを使ってお父さんが自宅に近づいたら 自動的にチャット(Slackなど)に投稿
  • Outlookで特定のメールを受信したら 自動的にGoogleカレンダーに登録
  • Google アシスタントに「ゲストWi-Fiを用意して」と言ったらASUSのルータを操作してゲストWi-Fiを有効化する

などなど、色んなシステムの動作をトリガーにして別のシステムを動かすことが出来ます。

Google Home で独自の機能を作る

Google Home は Google アシスタント が聞いて喋って色々な機能を提供しています。

これを自分で作るのは難しそうですよね。実際高度なアプリ例えば 「Googleに話しかけるだけで新幹線の切符を買ってもらう」 などは それを処理するサーバ、プログラミングの知識と環境が必要になってしまいます。

しかし、IFTTTを使うとブラウザまたはIFTTTアプリ上でGoogleアカウントやその他のシステムのアカウントに連携して、「開始条件」と「処理」を設定するだけで簡単なGoogleアシスタント機能が開発できます。

続きを読む

Chatworkの投稿内容をGoogleスプレッドシートに自動で反映させる

qiita.com

思いの外簡単そうだったのでこれをやってみる。

用意するもの

  • Googleスプレッドシート
  • Chatwork

ざっくり手順

  1. スプレッドシート作成
  2. スクリプトエディタでdoPostとJSONパーサを記述
  3. スクリプトAPI公開
  4. ChatworkでWebhookを作成してスクリプトのURLを指定
続きを読む

CSVファイルの数字と日付データからのみダブルクォートを削除するsedコマンド

sedコマンドええやん!

メモっとかないと絶対忘れるので記録。

# 整数と浮動小数点数のダブルクォーテーションだけを削除するsedコマンド
echo -e "\"id\",\"item\",\"price\",\"taxrate\",\"total\"\n"\
"\"0001\",\"apple\",\"1000\",\"1.08\",\"1080\"\n"\
| sed -e 's/\"\([0-9|.]*\?\)\"/\1/g'

# テキストファイルに対して実行する場合
# sed -i 's/\"\([0-9|.]*\?\)\"/\1/g' data.csv

# 日付データのダブルクォーテーションだけを削除するsedコマンド
echo "\"2019/07/29\",\"2019/7/9\",\"2019年7月29日\""
echo "\"2019/07/29\",\"2019/7/9\",\"2019年7月29日\"" | sed -e 's/\"\([0-9]\{4\}\/[0-9]\{1,2\}\/[0-9]\{1,2\}\)\"/\1/g'

# テキストファイルに対して実行する場合
# sed -i 's/\"\([0-9]\{4\}\/[0-9]\{1,2\}\/[0-9]\{1,2\}\)\"/\1/g' data.csv

念の為、実利用する前にhttps://paiza.io とかで実際の動作を見てみてください。

【VBA/VBScript】HTML特殊文字コードから16進数を抽出→10進数に変換してデコードする

CSV形式でダウンロードしたデータの一部が文字化けしていて困ってるという相談を受けて、「読み込み時のエンコード指定の問題でしょw」と見てみると部分的にHTMLエンコードされている謎のCSV・・・。

これに対応すべく部分的なHTMLエンコード文字をデコードして置換するスクリプトを作ってみました。

いろいろ調べてもHTMLエンコードかと思いきやURLエンコードの記事だったりして目標にたどり着くのにちょっと時間がかかってしまいましたが以下を発見。

[VBA] htmlデコード関数 | n218.info

シンプルで分かりやすく、これだ!と思ったけどそのままでは使えなかったの修正して使わせていただきました。

 

この記事で紹介している内容

  • &#x30C6;&#x30B9;&#x30C8;のような数値文字参照のHTMLエンコードされた文字列をデコード
  • 文字列の中から変換対象を探し出してデコード後の文字列に置換する関数
  • ドラッグアンドドロップでCSVファイル内のHTMLエンコード文字列をデコードして置換するVBS

 

続きを読む