私はこのGoogleスプレッドシートスクリプトを使用して、json形式の書籍データを取得します。書籍のタイトルと著者を表示するのに問題はありませんが、 "offerData"オブジェクトには書籍によって異なる量の要素(売り手からの価格)を含めることができます。今、私は、ループを作成し、そのようなofferData値格納しています:ループ(Googleスプレッドシート)を使用して入れ子になったjson値を返します
price[i] = offerdata.offers[i]["price"];
condition[i] = offerdata.offers[i]["condition"];
seller[i] = offerdata.offers[i]["seller"]["displayName"];
と、このようなデータを返しています:
var resultRow = [[title, specstag, price[0], condition[0], seller[0], price[1], condition[1], seller[1], price[2], condition[2], seller[2]]];
明らかにこれはのみの価格、条件、販売者の情報を3人の売り手を返します。問題は、本は必ずしも3人の売り手を持っているとは限らず、1人から10人程度のどこでもかまいません。
私の質問は、ここでどのようにすべてのオファーデータ(価格/条件/売り手)を返すことができますか? :
var resultRow = [[title, specstag, price[0], condition[0], seller[0], price[1], condition[1], seller[1], price[2], condition[2], seller[2]]];
-
function getBookDetails(isbn) {
// Query the book database by ISBN code.
if (isbn !== "") {
var url = "https://api.bol.com/catalog/v4/search/?apikey=myapi6&offers=all&format=json&q=" + isbn;
var response = UrlFetchApp.fetch(url);
var results = JSON.parse(response);
if (results.totalResultSize) {
// There'll be only 1 book per ISBN
var book = results.products[0];
// get Title and Authors
var title = (results.products[0]["title"]);
var specstag = (results.products[0]["specsTag"]);
var offerdata = results.products[0]["offerData"];
if (typeof offerdata.offers !== 'undefined' && offerdata.offers.length > 0) {
var arrayLength = offerdata.offers.length;
var price = [];
var condition = [];
var seller = [];
for (var i = 0; i < arrayLength; i++) {
price[i] = offerdata.offers[i]["price"];
condition[i] = offerdata.offers[i]["condition"];
seller[i] = offerdata.offers[i]["seller"]["displayName"];
}
}
}
var resultRow = [[title, specstag, price[0], condition[0], seller[0], price[1], condition[1], seller[1], price[2], condition[2], seller[2]]];
return resultRow;
}
}
ありがとうRobert!これを行う方法です:)私はforループで1つのエラーに気付きました。私はi = 1 + 3をi = i + 3に変更しました。 – dean2020
@ dean2020このミスについて申し訳ありません、それは私とたくさんのことが起こります – robert