Yuki's bnb blog

こんにちは!Yukiといいます。本業のかたわら大阪で2016年夏から民泊運営のお手伝いをしています。民泊業務に関する様々なことを自動化・効率化したいと思い日々活動しています。 お気軽にコメント・お問い合わせください :) TOEICスコア 985

【Beds24のAPI連携シリーズ】Beds24から予約一覧CSVを自動取得する方法

f:id:yukibnb:20200228171917p:plain

こんにちは!
Yuki (@yukibnb) です。

前回はBeds24のAPI連携を行うためのプログラム記述画面、Google Apps Script (GAS) のスクリプトエディタの開き方を紹介しました。
www.yukibnb.com


今回はいよいよプログラムを記述します。

では見ていきましょう!

 

コピペでOK!Beds24から予約一覧CSVを自動取得するプログラム

スクリプトエディタにプログラムをコピペする

前回の記事で開いたGASのスクリプトエディタに以下をまるごとコピペしてください。

function bookingCsv() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  
  //★★★ シート名を記入 ★★★
  var sh = ss.getSheetByName("シート名");
  
  //シートの全データを削除する
  sh.getDataRange().clearContent();
  
  //★★★ Beds24のログインIDを記入 ★★★
  var userId = "Beds24のログインID"
  
  //★★★ Beds24のAPIキーを記入 ★★★
  var apiKey = "Beds24のAPIキー"
  
  //POST先のURL
  var url = "https://www.beds24.com/api/csv/getbookingscsv"
  
  var options = {
    "method": "post",
    "followRedirects": false,
    "payload": {
      "username": userId,
      "password": apiKey,
    }
  }
  
  //CSVをBeds24からダウンロード
  var csv = UrlFetchApp.fetch(url,options);
  
  //ダウンロードしたCSVを二次元配列にする
  var csvContents = Utilities.parseCsv(csv);
  
  //シートにCSVをペーストする
  sh.getRange(1,1,csvContents.length,csvContents[0].length).setValues(csvContents);
}

 
コピペすると以下のようになります。
f:id:yukibnb:20200224222905p:plain

 

一部情報を置き換える

先程ペーストしたプログラムの中の3か所をみなさん自身のものに置き換えてください。

シート名
//★★★ シート名を記入 ★★★
var sh = ss.getSheetByName("シート名");

"シート名"をご自身のスプレッドシートのシート名に置き換えてください。

そのシートに予約一覧CSVが反映されます。

シート名とは以下箇所のことです。
f:id:yukibnb:20200224223608p:plain

 

Beds24のログインID
//★★★ Beds24のログインIDを記入 ★★★
var userId = "Beds24のログインID"

ご自身のBeds24のログインIDに置き換えてください。

ログインIDは以下箇所のことです。
f:id:yukibnb:20200224223915p:plain

 

Beds24のAPIキー
//★★★ Beds24のAPIキーを記入 ★★★
var apiKey = "Beds24のAPIキー"

ご自身のBeds24のAPIキーに置き換えてください。

APIキーとは以下記事で発行したものです。
www.yukibnb.com

 

スクリプトを保存する

f:id:yukibnb:20200224224607p:plain

スクリプトエディタの画面上部の[保存]アイコンをクリックして、スクリプトを保存してください。

これでBeds24から予約一覧CSVを自動取得するプログラムの記述が完了しました。

 

プログラムを手動実行しよう

スクリプトを選択する

f:id:yukibnb:20200224224939p:plain

スクリプトエディタの画面上部の[虫]アイコンの右をクリックし"bookingCsv"を選択します。

※元から"bookingCsv"と表示されている場合、選択不要です。

 

スクリプトの初回承認を行う

f:id:yukibnb:20200224225248p:plain

スクリプトエディタの画面上部の[▶]アイコンをクリックしてください。

すると、以下のようなポップアップが表示されます。
f:id:yukibnb:20200224225505p:plain

これは"bookingCsv"を実行するための初回承認です。承認しないとプログラムを実行できないため、[許可を確認]をクリックし承認を行ってください。

なお[許可を確認]をクリックした後の詳しい承認方法については以下記事に画像や動画付きで詳しく紹介していますので、そちらをご覧ください。
www.yukibnb.com

 

"bookingCsv"を手動実行する

f:id:yukibnb:20200224230322p:plain

初回承認が完了すると自動的に"bookingCsv"が実行されます。

もし何も動きがなければ、画面上部の[▶]アイコンをクリックすると"bookingCsv"を実行できます。

予約件数にもよりますが数十秒から数分でプログラムの実行が完了します。

 

シートに予約一覧CSVが反映される

f:id:yukibnb:20200224230924p:plain

プログラムの実行が完了すると、無事スプレッドシートに予約一覧CSVが反映されました。

memo

今回紹介したプログラムでは実行日の前後1年の予約情報を取得します。

 

毎日自動的に予約一覧CSVが更新されるようにトリガーを設定する

無事スクリプトの初回承認が完了し、手動実行の方法がわかりました。

ただし毎日[▶]アイコンをクリックしてプログラムを手動実行するのは面倒なので、毎日決まった時間帯に予約情報CSVが自動更新されるように設定を行います。

この設定のことを「トリガーを設定する」と言います。

 

トリガーの設定画面を開く

f:id:yukibnb:20200224231941p:plain

スクリプトエディタの画面上部の[時計]アイコンをクリックしてください。

すると別タブでトリガーの設定画面が開きます。

 

[トリガーを追加]をクリックする

f:id:yukibnb:20200224232648p:plain

画面右下の[トリガーを追加]をクリックしてください。

するとポップアップが表示されます。

 

トリガーを設定する

f:id:yukibnb:20200224233032p:plain

上記画像のように各項目の選択肢を選択してください。

  • 1) 実行する関数を選択: bookingCsv
  • 2) 実行するデプロイを選択: Head
  • 3) イベントのソースを選択: 時間主導型
  • 4) 時間ベースのトリガーのタイプを選択: 日付ベースのタイマー
  • 5) 時刻を選択: 自動更新したい時間帯

(5)は画像内では「午前7時~8時」としていますが、自由に時間帯を選択頂いて構いません。ここで選択した時間帯に毎日予約一覧CSVがスプレッドシートに自動反映されます。

 

注意

以下画像のように[分ベースのタイマー]&[〇分おき]を選択すると、1日に1回ではなく、〇分に1回予約一覧CSVをスプレッドシートに反映させることができます。

ただし短い時間にプログラムを実行し続けるとBeds24側に負担がかかり、場合によってはBeds24のアカウントが凍結される原因にもなります。

使用するAPIや取得するデータ量にもよりますが、合理的と思われる範囲内で設定しましょう。

f:id:yukibnb:20200225000929p:plain

 

[保存]をクリックする

f:id:yukibnb:20200224233845p:plain

右下の[保存]をクリックしてトリガーを保存してください。

 

トリガーを設定完了!

f:id:yukibnb:20200224234330p:plain

トリガーを保存すると、このように画面上に設定済みのトリガーが表示されます。

これでBeds24から予約一覧CSVを毎日自動的に取得し、スプレッドシートに反映できるようになりました!

 

まとめ

無事プログラムの記述からトリガーの設定まで完了しました。

これで何もしなくても毎日決まった時間帯に予約一覧CSVがスプレッドシートに自動反映されます。

Beds24の予約一覧CSVを初めて見た方は情報量の多さにびっくりするかもしれません。

このCSV情報はそれ自体では列数や行数が多く見にくいかもしれませんが、ここから必要な情報のみを抽出したり、集計したりすることで業務を便利かつ効率的に進めることができるようになります。

おすすめの活用方法は次回以降にご紹介しますのでご期待ください!