我有1000多个Importxml函数的工作表。我注意到我不能在一张纸上导入> 50,所以我想以1的方式导入它们并快速复制粘贴值,因此我将能够导入所有的1000。
我尝试了很多事情,这些是我尝试过的最后两个脚本:
脚本1:
function testfindfunc1() {
var sheet = SpreadsheetApp.getActiveSheet();
var targetrow = 7;
var targetcell = 1;
var result = sheet.getRange(targetrow, targetcell);
var formula1 = result.getFormula();
var findVal = sheet.getRange(targetrow, targetcell).getValue();
if( findVal == ('#N/A') || findVal == ('Loading...')) {
var rangeToCopy = sheet.getRange(targetrow, targetcell);
rangeToCopy.copyTo(sheet.getRange(targetrow, targetcell));
} else {
result.setValue(findVal);
}
}
上面脚本的问题:
脚本2:
function bulkXml() {
var sheet = SpreadsheetApp.getActiveSheet();
var Num = Browser.inputBox("How many URLs do you need to scrape?");
for (x=2; x-2 < Num; x++) {
var url = sheet.getRange(x,15).getValue();
sheet.getRange(2,2).setValue(url);
var xpathResult = sheet.getRange('B2').getValue();
var xpathResult1 = sheet.getRange('D2').getValue();
var xpathResult2 = sheet.getRange('E2').getValue();
var xpathResult3 = sheet.getRange('F2').getValue();
var xpathResult4 = sheet.getRange('G2').getValue();
var xpathResult5 = sheet.getRange('H2').getValue();
var counter = x - 1;
sheet.getRange("B1").setValue(counter + "/" + Num);
sheet.appendRow([xpathResult,xpathResult1,xpathResult2,xpathResult3,xpathResult4,xpathResult5]);
if( url == ('#N/A') || url == ('Loading...')) {
var rangeToCopy = sheet.getRange(counter);
rangeToCopy.copyTo(sheet.getRange(counter));
}
}
}
脚本2问题:
实际上,起初〜50,它的工作效果不错,但是大约50以后,它的运行速度很慢,并打印了很多次“ #ERROR!”。
此外,如果有更好的方法(不是电子表格),我想知道:)