インターネット速度計測結果をスプレッドシートに自動記録する
昨日の記事で、speedtest-cliを使ってインターネット速度計測を定期実行するようにした。
この時はcsvをログファイルに記録するようにしていたが、都度サーバに入ってログファイルを確認するのも手間なのでGoogleSpreadsheetに記録できるようにする。
認証キーを配置するのも手間だったので、下記記事を参考にGASをWebアプリとして設定し、csvを受け取って書き込むようにした。
最終的なGASのコードは以下になった。
function doGet(e) {
const sheet = SpreadsheetApp.getActiveSheet();
const csv = e.parameter.csv;
if (csv) {
sheet.appendRow(csv.split(','));
const result = JSON.stringify(csv);
return ContentService.createTextOutput(result);
}
return ContentService.createTextOutput('{}');
}
RaspberryPi上に speedtest.sh
を作成して以下を記述。
#!/bin/bash
function urlencode {
echo "$1" | nkf -WwMQ | sed 's/=$//g' | tr = % | tr -d '\n'
}
csv=`/usr/local/bin/speedtest-cli --csv`
encoded_csv=`urlencode "${csv}"`
/ust/bin/curl -L -s -o /dev/null https://script.google.com/macros/s/XXXX/exec?csv=${encoded_csv}
実行権限を付与して、cronで定期実行するように設定。
chmod +x speedtest.sh
crontab -e
0 * * * * /home/pi/speedtest/speedtest.sh
これでスプレッドシートに自動記録できるようになった。