我正在进行Airtable API集成,我仍然对这种事情全新......我在特定视图中提取所有记录,对数据进行处理,然后更新复选框所有这些记录的字段为true。问题是Airtable将其api限制为5次/秒,我不确定我是否正确地发送数据。
function update_record(record_id) {
$.ajax({
url: 'https://api.airtable.com/v0/myAirtableBase/Table/' + record_id,
headers: {
'Authorization': 'Bearer apikey'
},
method: 'PATCH',
data: {
'fields': {
'Checkbox Field': true
}
},
success: function() {
console.log('it worked! I think');
},
error: function() {
console.log('nope');
}
});
}
$('#check_printed_button').click(function() {
var time = 0;
$('.record-name').each(function() {
var record_id = $(this).data('recordId');
setTimeout(update_record(record_id, time), time);
time += 250;
});
});
在此之前,我打印出一个表中的每个记录,其id在数据属性中。
我的网络窗格显示我收到了200的所有选项请求,但在最后几次返回之前,我收到了一个返回的请求方法,其中包含'429 Too Many Requests。'我尝试使用setTimeout避免这种情况,并将调用错开了.25s,但这显然无法正常工作。然后我再获得200个状态,然后是另外429个,然后是几个200个,然后是几个429个,然后我返回每个PATCH请求返回状态为“422 Unprocessable Entry”。对这些的响应显示类型:'INVALID_VALUE_FOR_COLUMN',消息:'字段(复选框字段)不能接受值true'。
帮帮我吧?真的不知道下一步该去哪里。我完全愿意废弃这个,并了解使用official node.js client的heck节点是什么,如果那真的是我需要的地方。
答案 0 :(得分:0)
这是处理我发现有效的复选框的一种非常简单的方法。
关于记录情况,是的,请使用Node.js客户端和airtable.js npm软件包。然后根据Airtable自身的大小,使用/构建API代理从表中获取所有记录。
/* Checkbox
* A single checkbox that can be checked or unchecked.
* Parameters:
* name: <String>
* value: <Boolean>
* default: false
* Setting this field to 0, '0', undefined, or null will set it to false.
* Setting this field to 1 or '1' will set it to true.
* Strict: value must be a Boolean. Numbers will throw an error.
*/
class Checkbox extends Field {
constructor(name, value = false, config) {
super(name, value, config);
this.type = 'Checkbox';
}
/* get value
* Return: <Boolean>
* Whether or not the checkbox is checked.
*/
get value() {
return this._value === true;
}
/* set value
* Parameters:
* value: <Boolean>
* Whether or not the checkbox is checked.
* undefined or null will be set to false.
* '0' or 0 will be set to false.
* '1' or 1 will be set to true.
*/
set value(value) {
if (value === undefined || value === null)
return this._value = false;
if (this.isStrict && typeof value !== 'boolean')
return this._error(`'value' must be a boolean.`, value);
if (`${value}` === '0' || `${value}` === '1')
value = !!Number(value);
if (typeof value !== 'boolean')
return this._error(`'value' must be a boolean.`, value);
this._value = value;
}
}
module.exports = Checkbox;