function a () {
let sheetName1 = 'シート1';
let sheetName2 = 'シート2';
createRecords(sheetName1);
createRecords(sheetName2);
}
function createRecords(sheet) {
const ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheet);
const data = ss.getDataRange().getValues();
const appId = xxx;
const apiToken = 'xxx';
const check = Browser.msgBox('kintoneに登録しますか?', Browser.Buttons.YES_NO);
if (check === 'yes') {
var records = [];
for (let i = 1; i < data.length; i++) {
var record = {
'フィールドコード1': {'value': data[i][0]}, // ここでレコード番号を指定している
'フィールドコード2': {'value': data[i][1]},
'フィールドコード3': {'value': data[i][2]},
};
records.push(record);
}
addRecords(appId, apiToken, records);
if (record) {
Browser.msgBox('登録が完了しました');
} else if (record === undefined) {
Browser.msgBox('登録可能なデータはありません');
}
}
}
function addRecords(appId, apiToken, records) {
let postUrl = 'https://{サブドメイン}.cybozu.com/k/v1/records.json';
let postData = {
'app': appId,
'records': records,
};
const option = {
'method': 'put',
'contentType' : 'application/json',
'headers' : {
"X-Cybozu-API-Token": apiToken
},
'payload': JSON.stringify(postData)
};
const req = UrlFetchApp.fetch(postUrl,option);
return req;
}
現状上記のコードで関数を実行しますと、
Exception: Request failed for https://{サブドメイン}.cybozu.com returned code 400. Truncated server response: {“code”:“CB_VA01”,“id”:“xxxxx”,“message”:“入力内容が正しくありません。”,“errors”:{“records[xxx].id”:{“messages”:["更新するレコードを、「id」か「updateKey」のいずれかのパ… (use muteHttpExceptions option to examine full response)
というエラーメッセージが出てしまいます。
var record の中でレコード番号を指定しているためや、レコード番号をキーとしてkintoneのレコードを更新させたいので、idをパラメータとして指定しなければいけないような気がするのですが、公式ドキュメント等を参考にしてもどのように記述したらいいのか分からずに困っております。
ki さま
以下のように記載する必要があります。
レコードの更新(PUT)の場合、どのレコードを更新するかを「record(更新したいフィールドを入れた連想配列)」とは別で「id」と指定する必要があり、ここにレコード番号を記載します。
(公式ドキュメントだと「リクエストボディの構造」という部分に例があります)
var records = [];
for (let i = 1; i < data.length; i++) {
var updateRecord = {
id: data[i][0],
record: {
'フィールドコード2': {value: data[i][1]},
'フィールドコード3': {value: data[i][2]}
}
};
records.push(updateRecord);
};
addRecords(appId, apiToken, records);
Exception: Request failed for https://{サブドメイン}.cybozu.com returned code 400. Truncated server response: {“code”:“CB_VA01”,“id”:“xxxxx”,“message”:“入力内容が正しくありません。”,“errors”:{“records[xx].record[xx].value”:{“messages”:["日時はISO8601形式の必要があります。