毎週Beds24のAPIから稼働室数をメールするスクリプトを書いた。
前回と前々回の記事から作った。
//メインの関数 function mailOccupancyData(){ getDataFromBeds24() mailToMyself('yourmailaddress') } //Beds24からいろいろ情報を取ってくる。 function getDataFromBeds24() { //初期設定などはここから //username はBeds24で登録しているメアド var username = "your@mailaddress" //passwordはBeds24のAPI KEY var password = "yourAPIKEY" //このスクリプトを配置しているSpreadsheetのID var shid = "yourspreadsheetid" //いつから(datefrom)いつまで(dateto) var datefrom = "2019-10-01" var dateto = "2020-01-31" //roomid(Beds24の部屋ID) var roomid = ["roomid","roomid"] //ここまでは各自書き換えてください。 var url = "https://www.beds24.com/api/csv/getroomdailycsv" var sp = SpreadsheetApp.openById(shid) var sheets = sp.getSheets() if(roomid.length>sp.getNumSheets()){ for (var i=1 ; i <= roomid.length; i++){ sp.insertSheet() } } for (var i=0 ; i < roomid.length ; i++){ var options = { method:"post", followRedirects:false, payload:{ username:username, password:password, propid:"yourpropid", roomid:roomid[i], datefrom:datefrom, dateto:dateto } } var res = UrlFetchApp.fetch(url,options) var csvfile = Utilities.parseCsv(res) Logger.log(i) var firstsh = sheets[i] firstsh.clear() firstsh.getRange(1,1,csvfile.length,csvfile[0].length).setValues(csvfile) Utilities.sleep(5000) } //最後のシートにクエリ関数を作成する var sh = sheets[sheets.length-1].activate() var formula = "=QUERY({" for (i in roomid){ formula += sheets[i].getName() + '!A2:L;' } formula = formula.slice(0,-1) formula += '\},\"select Col1 ,Col2 ,sum(Col5) where Col2 is not null group by Col1 , Col2 label sum(Col5) \'\'\")' //Logger.log(formula) sh.getRange('A1').setFormula(formula) //Logger.log(sh.getRange('B4').getValue()) } //稼働率を計算してメールするスクリプト function mailToMyself(mail){ var sh = SpreadsheetApp.getActive().getSheets() var data = sh[sh.length-1].getDataRange().getValues() var message = "" for (i in data){ Logger.log(i) message += data[i][0] + '年' + data[i][1] + '月の稼働部屋数は' + data[i][2] + 'です\n' } MailApp.sendEmail(mail,'稼働率報告',message) }
これをトリガー登録できるようにしておしまい。