こんにちは!
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); }
コピペすると以下のようになります。
一部情報を置き換える
先程ペーストしたプログラムの中の3か所をみなさん自身のものに置き換えてください。
シート名
//★★★ シート名を記入 ★★★ var sh = ss.getSheetByName("シート名");
"シート名"をご自身のスプレッドシートのシート名に置き換えてください。
そのシートに予約一覧CSVが反映されます。
シート名とは以下箇所のことです。
Beds24のログインID
//★★★ Beds24のログインIDを記入 ★★★ var userId = "Beds24のログインID"
ご自身のBeds24のログインIDに置き換えてください。
ログインIDは以下箇所のことです。
Beds24のAPIキー
//★★★ Beds24のAPIキーを記入 ★★★ var apiKey = "Beds24のAPIキー"
ご自身のBeds24のAPIキーに置き換えてください。
APIキーとは以下記事で発行したものです。
www.yukibnb.com
スクリプトを保存する
スクリプトエディタの画面上部の[保存]アイコンをクリックして、スクリプトを保存してください。
これでBeds24から予約一覧CSVを自動取得するプログラムの記述が完了しました。
プログラムを手動実行しよう
スクリプトを選択する
スクリプトエディタの画面上部の[虫]アイコンの右をクリックし"bookingCsv"を選択します。
※元から"bookingCsv"と表示されている場合、選択不要です。
スクリプトの初回承認を行う
スクリプトエディタの画面上部の[▶]アイコンをクリックしてください。
すると、以下のようなポップアップが表示されます。
これは"bookingCsv"を実行するための初回承認です。承認しないとプログラムを実行できないため、[許可を確認]をクリックし承認を行ってください。
なお[許可を確認]をクリックした後の詳しい承認方法については以下記事に画像や動画付きで詳しく紹介していますので、そちらをご覧ください。
www.yukibnb.com
"bookingCsv"を手動実行する
初回承認が完了すると自動的に"bookingCsv"が実行されます。
もし何も動きがなければ、画面上部の[▶]アイコンをクリックすると"bookingCsv"を実行できます。
予約件数にもよりますが数十秒から数分でプログラムの実行が完了します。
シートに予約一覧CSVが反映される
プログラムの実行が完了すると、無事スプレッドシートに予約一覧CSVが反映されました。
今回紹介したプログラムでは実行日の前後1年の予約情報を取得します。
毎日自動的に予約一覧CSVが更新されるようにトリガーを設定する
無事スクリプトの初回承認が完了し、手動実行の方法がわかりました。
ただし毎日[▶]アイコンをクリックしてプログラムを手動実行するのは面倒なので、毎日決まった時間帯に予約情報CSVが自動更新されるように設定を行います。
この設定のことを「トリガーを設定する」と言います。
トリガーの設定画面を開く
スクリプトエディタの画面上部の[時計]アイコンをクリックしてください。
すると別タブでトリガーの設定画面が開きます。
[トリガーを追加]をクリックする
画面右下の[トリガーを追加]をクリックしてください。
するとポップアップが表示されます。
トリガーを設定する
上記画像のように各項目の選択肢を選択してください。
- 1) 実行する関数を選択: bookingCsv
- 2) 実行するデプロイを選択: Head
- 3) イベントのソースを選択: 時間主導型
- 4) 時間ベースのトリガーのタイプを選択: 日付ベースのタイマー
- 5) 時刻を選択: 自動更新したい時間帯
(5)は画像内では「午前7時~8時」としていますが、自由に時間帯を選択頂いて構いません。ここで選択した時間帯に毎日予約一覧CSVがスプレッドシートに自動反映されます。
以下画像のように[分ベースのタイマー]&[〇分おき]を選択すると、1日に1回ではなく、〇分に1回予約一覧CSVをスプレッドシートに反映させることができます。
ただし短い時間にプログラムを実行し続けるとBeds24側に負担がかかり、場合によってはBeds24のアカウントが凍結される原因にもなります。
使用するAPIや取得するデータ量にもよりますが、合理的と思われる範囲内で設定しましょう。
[保存]をクリックする
右下の[保存]をクリックしてトリガーを保存してください。
トリガーを設定完了!
トリガーを保存すると、このように画面上に設定済みのトリガーが表示されます。
これでBeds24から予約一覧CSVを毎日自動的に取得し、スプレッドシートに反映できるようになりました!
まとめ
無事プログラムの記述からトリガーの設定まで完了しました。
これで何もしなくても毎日決まった時間帯に予約一覧CSVがスプレッドシートに自動反映されます。
Beds24の予約一覧CSVを初めて見た方は情報量の多さにびっくりするかもしれません。
このCSV情報はそれ自体では列数や行数が多く見にくいかもしれませんが、ここから必要な情報のみを抽出したり、集計したりすることで業務を便利かつ効率的に進めることができるようになります。
おすすめの活用方法は次回以降にご紹介しますのでご期待ください!