Yado_tech

旅館+ITとはなんぞ

毎週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)
}

これをトリガー登録できるようにしておしまい。