はじめに
今回の記事ではGAS(Google Apps Script)と楽天APIを使用して楽天市場のジャンルIDを簡単にスプレッドシートに出力できるツールの作成方法を紹介します。
楽天APIの取得も含めて作成時間は15分ほどです。GAS初心者の方でも作成可能です。
楽天のジャンルIDを知りたいけど簡単に検索できるツールが欲しい
GASを使って何かツールを作成してみたい
動作イメージ
Googleのスプレッドシート上で本ツールは動作します。
まず、「検索ジャンルID(A2セル)」に0を入れて[実行]ボタンをクリックします。
実行ボタンをクリックすると、「ジャンル名」の列と「ジャンルID」の列に検索したジャンルIDのサブジャンルが一覧で出力されます。
さらに表示されたジャンルIDを選択し、「実行」ボタンをクリックすることで一階層下のジャンルとジャンルIDを表示させることができます。
これらを繰り返していくことで目的のジャンルのIDを知ることができます。
事前準備
今回のツールの作成に当たっては以下2つのものが必要となります。
- Google アカウント
- 楽天APIのアプリID
楽天APIの取得方法については下記URLを参照ください。途中で記入する「アプリ名」や「アプリURL」は任意のもので構いません。
取得が完了したら、[アプリID]を控えておいてください。
作成方法
スプレッドシートの新規作成
まず、Google スプレッドシートにアクセスします。
アクセスしたら、[新しいスプレッドシートを作成]> [空白]をクリックして新しいスプレッドシートを作成します。
スプレッドシートに移動したら、[A2]セルに[0] を半角で入力しておきます。
また、以下2つはこの後の作業で使用するため、パラメータを控えておいてください。
スプレッドシートの上部アドレスバーより、IDを控えておく。
コピーする場所は下記の「ここの値をコピーして控えておく」の箇所。
https://docs.google.com/spreadsheets/d/ここの値をコピーして控えておく/edit#gid=0
今回使用するスプレッドシートのシート名。
特に変更していなければ「シート1」を控えておいてください。
GASの設定
スプレッドシート上部バーの[拡張機能]>[Apps Script]をクリックします。新しいタブが開きます。
ここから、GAS上でコードを作成します。もともと記載してある以下コードは削除します。
function myFunction() {
}
削除したら、以下コードをコピーしてそのまま貼り付けてください。
var SPREADSHEET_ID = "YOUR_SPREADSHEET_ID"; // スプレッドシートのIDを設定
var SHEET_NAME = "シート1"; // 任意のシート名を設定
var API_KEY = "YOUR_RAKUTEN_API_KEY"; // 楽天のAPIキー(アプリID)を設定
function fetchRakutenSubGenres() {
var ss = SpreadsheetApp.openById(SPREADSHEET_ID);
var sheet = ss.getSheetByName(SHEET_NAME);
// A1セルにヘッダー「検索ジャンルID」を設定
sheet.getRange("A1").setValue("検索ジャンルID");
var parentGenreId = sheet.getRange("A2").getValue(); // A2セルからジャンルIDを取得
if (parentGenreId === null || parentGenreId === undefined) {
Logger.log("A2セルにジャンルIDが指定されていません。");
return;
}
// B列とC列のデータを消去
sheet.getRange("B:C").clearContent();
// 出力結果のヘッダーを設定
sheet.getRange("B1").setValue("ジャンル名");
sheet.getRange("C1").setValue("ジャンルID");
var data = fetchSubGenres(parentGenreId); // 指定されたジャンルIDのサブジャンルを取得
// ジャンル名とジャンルIDをスプレッドシートのB列とC列に出力
sheet.getRange(2, 2, data.length, 2).setValues(data); // B2セルから出力開始
}
function fetchSubGenres(genreId) {
var url = "https://app.rakuten.co.jp/services/api/IchibaGenre/Search/20140222?format=json&genreId=" + genreId + "&applicationId=" + API_KEY;
var response = UrlFetchApp.fetch(url);
var json = JSON.parse(response.getContentText());
var genres = json['children'];
var data = [];
for (var i = 0; i < genres.length; i++) {
var genreName = genres[i]['child']['genreName'];
var subGenreId = genres[i]['child']['genreId'];
data.push([genreName, subGenreId]);
}
return data;
}
この時、1行目から3行目の” ”で囲われた部分を先ほど控えておいたパラメータに置き換えます。
- YOUR_SPREADSHEET_ID: スプレッドシートのID
- SHEET_NAME: シート名
- YOUR_RAKUTEN_API_KEY: 楽天APIのアプリID
それぞれ①から③まで記入が完了したら、Apps Script 上部バーの[プロジェクトを保存]をクリックして保存します。
GASの実行
Apps Script 上部バーの[▶実行]をクリックします。最初のスクリプトの実行には権限が必要となるため、[承認が必要です]というモーダルが表示されたら、
[権限を確認]>[表示されているGoogleアカウント]>[詳細]>[無題のプロジェクト(安全ではないページ)に移動]>[許可]まで移動します。クリック後GASが実行されます。
ボタンの作成
再度スプレッドシートのタブに戻ります。
Google スプレッドシートを開き、上部メニューの [挿入] > [図形描画] をクリックします。
好きな図形を選択し、スプレッドシート上の任意の位置に配置します。この図形がボタンとなります。
ボタン(図形)を右上の…をクリックし、[スクリプトを割り当て] をクリックします。
開いたダイアログボックスに 以下を入力し[確定]をクリックします。
fetchRakutenSubGenres
以降は作成されたボタンをクリックすることで、簡単にプログラムを実行することができます。
注意点
GASおすすめ本
GASをもっと勉強したい!ほかにも自分で何か作成したい!という方には以下がおすすめです。