我当时正在使用ImportXML抓取日期,但是,自从得知ImportXML有一个上限后,我就改用编写自己的脚本了。目前,我拼凑的脚本“加载”了一个完全空的单元格,如Test Sheet所示,该脚本粘贴在下面。我不是非常有经验的脚本编写者,并且在确定我做错事情时遇到问题,我们将不胜感激。
function IDATE(id)
{
const url = "https://www.buyma.com/item/" + id;
var response = UrlFetchApp.fetch(url);
const s = response.getContentText();
var match = /[@id='s_yukodate']/.exec(s);
if (match != null)
{
date = match[1];
}
return [date];
}
答案 0 :(得分:3)
尝试一下。
首先,以以下格式设置工作表以使脚本起作用-
然后,在脚本编辑器中使用以下代码-
function getData() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var values = ss.getDataRange().getValues();
var header = values[0];
var idIndex = header.indexOf('ID');
var dateIndex = header.indexOf('Date');
for (var i = 1; i < values.length; i++) {
var id = values[i][idIndex];
var date = IDATE(id);
ss.getRange(i+1, dateIndex+1).setValue(date);
}
}
function IDATE(id) {
const url = "https://www.buyma.com/item/" + id;
Logger.log(url);
var response = UrlFetchApp.fetch(url);
const s = response.getContentText();
var match = /s_yukodate[\s\S]*?<dd>(\d\d\d\d\/\d\d\/\d\d).*<\/dd>/.exec(s);
if (match != null) {
var date = match[1];
return date;
}
}
您将因此看到类似以下的输出-
很明显,此脚本在很大程度上取决于所使用的正则表达式-
s_yukodate[\s\S]*?<dd>(\d\d\d\d\/\d\d\/\d\d).*<\/dd>
请随时根据需要进行修改。希望这会有所帮助!