みなさん、こんにちは!
現役エンジニアの”よし”です。
前回前々回は、ホットプロファイルのAPIの接続部分についてとAPIで取得したデータをスプレッドシートに反映するには、欲しいデータを2次元配列にまとめる方法についてざっくりご紹介しました。
[HotProfileAPI-実装編②]HotProfile(ホットプロファイル)APIを利用して、名刺データをGASでスプレッドシートに表示してみた
今回は実装編③として、ホットプロファイルAPIで取得したのち、成形したデータをスプレッドシートにセットする方法についてご紹介いたします。
前々回のおさらい
API接続部分の実装の完成形
前回はHotProfile(ホットプロファイル)APIの接続部分の実装についてご紹介いたしました。
完成形のコードは以下です。
function post() {
let url = 'https://hammock.hotprofile.biz/rest_api/v1/business_cards/get_entry_list'
let header = {
"Content-Type" : "application/x-www-form-urlencoded"
};
let requestBody = {
"api_key": "この部分にはホットプロファイルAPIキーを設定してください"
};
let options = {
"method" : "POST",
"header" : header,
"payload": requestBody
};
// APIを実行
let response = UrlFetchApp.fetch(url,options);
let jsonData = JSON.parse(response);
return jsonData;
}
前回のおさらい
データ成形部分の実装の完成形
APIで取得したデータをスプレッドシートに反映するには、欲しいデータを2次元配列にまとめる実装をしました。
完成形のコードは以下です。
function replaceData(businessCardsData) {
let data = [];
// 取得した名刺データを2次元配列化
for(let i = 0; i < businessCardsData.length; i++) {
data.push([businessCardsData[i]["client_name"],
businessCardsData[i]["id"],
businessCardsData[i]["name"],
businessCardsData[i]["tel"],
businessCardsData[i]["email"],
businessCardsData[i]["created_at"],
businessCardsData[i]["updated_at"],
);
};
return data;
}
上記コードは、ホットプロファイルAPIで取得したレスポンスデータから名刺情報を取り出し、2次元配列にしています。
また、上記の2つのコードを書いただけではただ二つのfunctionが存在するだけになってしまうので、この2つのfunctionをつなげるためのmainとなるfunctionを実装しました。
コードは以下です。
function getData() { // POST API let responseData = post(); // 名刺データの取得 let businessCardsData = responseData["business_cards"]; // データの成形 let data = replaceData(businessCardsData); };
スプレッドシートにAPIで取得したデータをセットする
今回は、getData()
をもとに、成形データをスプレッドシートにセットする部分について説明していきましょう。
実装の完成形は以下になります。
function updateAllList(data){
// シートの取得
let ss = SpreadsheetApp.openById(SpreadsheetApp.getActiveSpreadsheet().getId());
let sheet = ss.getSheetByName("ここにデータをセットするシート名を書く");
// データを入力する範囲を設定
let lastRow = data.length;
sheet.getRange(2,1,lastRow,data[0].length).setValues(data);
};
だいぶ簡略化して実装しております。笑
ミソはデータ入力の範囲設定の部分だと自負しております。笑(ぶっちゃけ自負するほどのことではないですが…笑)
最終的に完成したコードの全容はこちら!
getData()
を実行することで、ホットプロファイルAPIによるデータの取得から、スプレッドシートへのデータセットまで行うことができます。
function getData() {
// POST API
let responseData = post();
// 名刺データの取得
let businessCardsData = responseData["business_cards"];
// データの成形
let data = replaceData(businessCardsData);
// データのセット
updateAllList(data);
};
function post() {
let url = 'https://hammock.hotprofile.biz/rest_api/v1/business_cards/get_entry_list'
let header = {
"Content-Type" : "application/x-www-form-urlencoded"
};
let requestBody = {
"api_key": "この部分にはホットプロファイルAPIキーを設定してください"
};
let options = {
"method" : "POST",
"header" : header,
"payload": requestBody
};
// APIを実行
let response = UrlFetchApp.fetch(url,options);
let jsonData = JSON.parse(response);
return jsonData;
}
function replaceData(businessCardsData) {
let data = [];
// 取得した名刺データを2次元配列化
for(let i = 0; i < businessCardsData.length; i++) {
data.push([businessCardsData[i]["client_name"],
businessCardsData[i]["id"],
businessCardsData[i]["name"],
businessCardsData[i]["tel"],
businessCardsData[i]["email"],
businessCardsData[i]["created_at"],
businessCardsData[i]["updated_at"],
);
};
return data;
}
function updateAllList(data){
// シートの取得
let ss = SpreadsheetApp.openById(SpreadsheetApp.getActiveSpreadsheet().getId());
let sheet = ss.getSheetByName("ここにデータをセットするシート名を書く");
// データを入力する範囲を設定
let lastRow = data.length;
sheet.getRange(2,1,lastRow,data[0].length).setValues(data);
};
まとめ
いかがでしたでしょうか?
とてもざっくりではありますが、実装編③として、ホットプロファイルAPIで取得したのち、成形したデータをスプレッドシートにセットする方法についてご紹介いたしました。
最終的に完成したコードをコピーしてAPIキーとシート名の部分を変更すれば、データの取得はできちゃいます。。!
ぜひ参考になれば幸いです。
Google Workspaceを活用している場合はGoogle Apps Scriptを覚えると業務の効率化および自動化ができます。
Google Apps Scriptが学べるスクールはコチラで紹介しています。よかったら見てみてください。
Google Apps Scriptが学べたらコチラの記事で収益化してみてはいかがでしょうか?
以上、最後までお読みいただきありがとうございました。