【发布时间】:2020-07-15 09:32:38
【问题描述】:
我正在尝试抓取网页并将值放入缓存中,以免达到每日 urlFetch 限制。
这是我正在使用的代码,它可以在没有缓存和属性服务的情况下工作,但在我尝试添加该元素时却不行。
function scrapercache(url) {
var url = "https://www.gurufocus.com/term/fscore/nyse:ABBV/Piotroski-F-Score";
var result = [];
var description;
var options = {
'muteHttpExceptions': true,
'followRedirects': false,
};
Logger.log('line 16 OK');
var cache = CacheService.getScriptCache();
var properties = PropertiesService.getScriptProperties();
Logger.log('line 21 OK');
let res = cache.get(url);
// if(res){
// return JSON.parse(res)
//}
Logger.log(res);
Logger.log('line 24 OK');
if (res) {
// trim url to prevent (rare) errors
url.toString().trim();
var r = UrlFetchApp.fetch(url, options);
Logger.log(r);
Logger.log('line 34 OK');
var c = r.getResponseCode();
Logger.log(c);
Logger.log('line 38 OK');
// check for meta refresh if 200 ok
if (c == 200) {
var html = r.getContentText();
cache.put(url, "cached", 21600);
properties.setProperty(url, html);
Logger.log('line 46 OK');
var $ = Cheerio.load(html); // make sure this lib is added to your project!
Logger.log('line 49 OK');
// meta description
if ($('meta[name=description]').attr("content")) {
description = $('meta[name=description]').attr("content").trim();
var trim_des = description.substr(0, 40);
Logger.log('line 55 OK');
}
}
result.push([trim_des]);
Logger.log('line 60 OK');
}
return result;
Logger.log('line 64 OK');
}
我这样调用函数:
=scrapercache("https://www.gurufocus.com/term/fscore/nyse:ABBV/Piotroski-F-Score")
& 我收到以下错误消息
错误:引用不存在
编辑:我添加了日志行以查看脚本是否正确处理 & 看起来只有在 28 点之前还可以
【问题讨论】:
-
哪一行会报错?见minimal reproducible example
-
您在哪里看到错误?请截图
-
@OlegValter:好的,我知道我需要添加一行代码来记录所以我添加了几个 Logger.log('line OK') 来查看是否正在处理,它看起来像是在第 28 行停止。我更新了问题中的代码+截图
-
@OlegValter,别担心,我在睡觉,我在亚洲。我用 Logger.log(res) 添加了 res 的日志;并且从日志中看起来该值为空: [20-07-16 07:10:32:070 HKT] null 因此 var cache = CacheService.getScriptCache(); 可能存在问题谢谢
标签: google-apps-script google-sheets cheerio referenceerror