背景・実現したいこと
現在、スプレッドシートのGASからAPIを叩き、kintoneのデータをスプレッドシートに取得する実装を行っています。その際、kintoneの一覧を指定してデータを取得したいと思っています。
一覧1~一覧5があれば、一覧2を取得したいといった感じです。
こちらのページ(https://specially198.com/get-kintone-data-into-a-spreadsheet/ )を参考に実装を行いましたが、
【 Exception: Request failed for https://{ サブドメイン }.cybozu.com returned code. Truncade server response: {“code”:“CB_VA01”,“id”{ ランダムな文字列?が記載 }",“message”:“入力内容が正しくありません。”,{“app”:{“messages”:[“整数で指定してください。”]}}}(use muteHttpExceptions option to examine full response) 】
というエラーが起きてしまい、調べても解決出来そうにない為、こちらに投稿させて頂きました。
以下ソースコードです。
function getRecords() {
var urlGetRecords = "http://{サブドメイン}.cybozu.com/k/v1/records.json";
var appId = xxx;var apiToken = 'xxxxxxxxxx'; var viewId = xxxxx;
// kintoneからデータを取得
var paramFields = "&fields=$id," + encodeURIComponent("xxx,xxx,xxx,xxx,xxx");
var url = urlGetRecords + "?app=" + appId + "?view=" + viewId + paramFields;
var res = JSON.parse(UrlFetchApp.fetch(url, {"method": "get","headers": {"X-Cybozu-API-Token": apiToken}}));
// 取得したデータを整形
var output = [];
res["records"].forEach(function(record){
var row = []; row.push(record["xxx"].value));
row.push(record["xxx"].value);
row.push(record["xxx"].value);
row.push(record["xxx"].value);
row.push(record["xxx"].value);
output.push(row);
});
// スプレッドシートに出力
var sheetOutput = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet name');
sheetOutput.getRange(2, 1, output.length, output[0].length).setValues(output);
}
var res = JSON.parse(UrlFetchApp.fetch(url, {"method": "get","headers": {"X-Cybozu-API-Token": apiToken}}));
の部分で引っかかってしまっているようです。
また、console.log(url); を行うと、
http://{サブドメイン}.cybozu.com/k/v1/records.json``?app=xxx?view=xxxxx&fields=$id,以下paramFieldsで取得した値;
となっており、指定したviewIdの取得は出来ているように感じます…
"?view=" + viewId
の記述場所が悪いのかと思い、paramFieldsの後に書いてみる等試してみましたが上手く行きません。
そもそも指定した一覧の取得でview idを指定して取得するという方法が合っているのかも含め教えて頂けたら幸いです。