问题描述
我构建了一个调用 API 并返回数据的简单函数。我将在下面附上代码。当我使用“VGI”运行 test() 函数时,它每次尝试都能完美运行。当我在 Google 表格中调用 =DIVIDEND_HISTORY("VGI")
时,90% 的情况下都会出现 403 身份验证错误。是什么导致它在工作表和脚本中以不同的方式运行?有什么我可以做的吗?当实际 API 为:
https://seekingalpha.com/api/v3/symbols/vgi/dividend_history?group_by=quarterly&sort=-date
代码:
function test() {
Logger.log(dividend_history("VGI"));
}
function dividend_history(sym) {
var sym1 = String(sym).toLowerCase();
var url = "https://seekingalpha.com/api/v3/symbols/"+sym1+"/dividend_history?group_by=quarterly&sort=-date";
var jsonData = JSON.parse(UrlFetchApp.fetch(url).getContentText()).data;
var processed_data = jsonData.map(({...item}) => item.attributes).map(({split_adj_factor,declare_date,year,date,record_date,amount,...item}) => item);
return [[processed_data[0].ex_date,processed_data[0].pay_date,processed_data[0].adjusted_amount,processed_data[0].freq]];
}
解决方法
我已经尝试过这个,它在第一次运行时有效,但在脚本的每次成功运行中都失败了。这意味着函数是在脚本上还是在工作表上运行都没有关系。
对此的可能假设是,服务器 (seekingalpha) 在运行脚本一次后阻止了您的 IP,因为它检测到您的会话/请求是生成的机器人/脚本。