GoogleAppsScriptとGoogle driveを使ってCrowdsolvingの順位が毎日メールで届くようにした話
Crowdsolving第3回リンク予測が始まった。
https://crowdsolving.jp/node/629
けれども結果をいちいち見に行くのがだるい。
ということでメールで順位が届くようにした。
まずは2d-arrays-libraryというライブラリが必要なのでインストールしておく。
https://sites.google.com/site/scriptsexamples/custom-methods/2d-arrays-library
Google driveのスプレッドシートで新規ブックを作成し、
シート1のセルA1に =ImportHtml("https://crowdsolving.jp/node/629/ranking","table",1) と入力する。
これでスプレッドシートに順位表を取り込める。
今度は取り込んだ順位表から自分の順位を取り出しメールを送る準備をする。
※(2013/8/22追記)google apps script内で関数を挿入するように変更。
Google driveのスプレッドシートで新規ブックを作成する。
ツール→スクリプトエディタで新規プロジェクトを作成し、以下のようにコードを打ち込む。
function myFunction() { var trg = "所沢義男";//ユーザー名 var address = "hoge@gmail.com";//メールの送り先 var sht = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1'); sht.getRange("A1").setFormula('=ImportHtml("https://crowdsolving.jp/node/629/ranking","table",1)'); // importHtmlがデータを取得し終わるまで待つ Utilities.sleep(10000); var names = sht.getRange(1, 3, sht.getLastRow(), 1).getValues(); var ix = ArrayLib.indexOf(names, 0, trg); var rank = sht.getRange(ix+1, 2).getValue().toString(); GmailApp.sendEmail(address, "現在の順位は"+ rank + "位", "https://crowdsolving.jp/node/629/ranking"); }
(2013/8/22追記)ImportHtmlがデータを取得し終わるまで待たないとエラーとなるようなのでコードを修正。
打ち込んだら、リソース→現在のプロジェクトのトリガーでメールを送りたい時刻を設定する。
順位は毎日24:00更新なのでその後に送ると良い。
enjoy!!