IPアドレスを自動でGoogleスプレッドシートに書き込む(Windows10)
構成
Windows 10 → Google Apps Script → Googleスプレッドシート
Google Apps Scriptが,Windows10からのGETに含まれるIPアドレスを受け取り,さらにGoogleスプレッドシートに書き込む
手順
サーバ側
まずは,GoogleスプレッドシートをGドライブから作成します.
この時,スプレッドシートのURLの{ここの文字列}部分がスプレッドシートのIDになっています.
https://docs.google.com/spreadsheets/d/{ここの文字列}/edit
次に,Google Apps Scriptを書いていきます.
Gドライブの右上の"新規"→"その他"→"Google Apps Script"で新規作成.
function doGet(e) { var id = '{スプレッドシートのID}'; var sheet = SpreadsheetApp.openById(id).getSheetByName("シート1"); var ipaddr = e.parameter.ip; sheet.getRange("A1").setValue(ipaddr); }
上記コードでは,GETを受け取った時,"ip"に設定されているパラメータがスプレッドシートのA1セルにIPアドレスが書き込まれます.
そうしたら,"公開"→"ウェブアプリケーションとして導入"→"アプリケーションにアクセスできるユーザーを全員(匿名含む)に変更"→"更新"
として,WebAPIを公開します.
リモートPC側(Windows 10)
こっちがWindowsなので結構面倒くさかったです.
まず,IPアドレスをGETで送るbatファイルを作成しました.
set IPADDRPATH={batファイルがあるディレクトリ}\ipaddr.txt ipconfig | find "IPv4" > %IPADDRPATH% set /p myipaddr=<%IPADDRPATH% curl {作成したWebアプリケーションのURL}?ip=%myipaddr:~38%
結構無駄ありそうですが,こんな感じで.
一度ipaddr.txtにipconfigからfindしたIPアドレスを入れ,そこから再度読み込んで"ip"のパラメータとしてAPIを叩いています.
最初に作成したスプレッドシートを確認すると,A1セルにIPアドレスが書き込まれていると思います.
後は,このbatファイルを定期的に実行するようにタスクスケジューラに登録します.
GUIからできるらしいのですが,上手くいかなかったのでコマンドプロンプトから設定.
ちなみに,/sc hourly /mo 6 で6時間に一回とかになるはず
schtasks /Create /tn "ipsender" /tr "{batファイルがあるディレクトリ}\ipsender.bat" /sc minute /mo 30
これで,30分に1回実行されます.ちなみに消す時はこう.
schtasks /Delete /tn "ipsender"
感想
作ったもののあんまり学内PCにアクセスする機会がないし,
そもそもIPアドレスが滅多に変わらなくて悲しい.(ネットワーク整備みたいなのしたっぽいし,固定IPになってる節)
そのうち,学内/社内のWindows PCにリモートデスクトップ接続する話を書きます.