在Google Spreadsheet中,我使用脚本编辑器在X2:D5之间的一列中插入Xpath。
function untitle() {
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getActiveSheet();
var range = sheet.getRange('D2:D5');
var cell = '=IMPORTXML(C2, "/html/body/div[2]")';
range.setValue(cell);
};
C2包含网站的地址。
我想在E2:E5之间进行同样的思考,如果单元格D2:D5中什么都没有
我该怎么办?
编辑我:
我将代码与xpath一起使用以获取D2:D5中的信息
如果代码获得#N / A(或什么都没有),我在E2:E5中使用第二个xpath
简而言之,我只想在D行中什么也没得到的情况下使用第二个xpath。
现在,所以我使用下面的代码,但是它检查了所有内容,所以效果不好。
function untitle() {
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getActiveSheet();
var range = sheet.getRange('D2:D5');
var range2 = sheet.getRange('E2:E5');
var cell = '=IMPORTXML(C2, "/html/body/div[2]")';
var cell2 = '=IMPORTXML(C2, "/html/body/div[3]")';
range.setValue(cell);
range2.setValue(cell2);
};
我想使用两个功能。
答案 0 :(得分:1)
如果我对您的问题的理解是正确的,那么此修改如何?我认为您的情况有几个答案。因此,请将此视为其中之一。
修改后的脚本的流程如下。
offset()
将公式放入“ E2:E5”。请进行如下修改。
从:range.setValue(cell);
至:
var values = range.getValues().some(function(e) {return e[0]});
var formulas = range.getFormulas().some(function(e) {return e[0]});
if (values || formulas) {
range.setValue(cell);
} else {
range.offset(0, 1).setValue(cell);
}
formulas
。如果我误解了您的问题,请告诉我。我想修改它。
cell
的公式放入“ D2:D5”。cell2
的公式放入“ E2:E5”。
var cell2 = '=IMPORTXML(C2, "/html/body/div[3]")';
"#N/A"
或""
时,请输入公式cell2
。如果我对您想要的内容的理解是正确的,那么修改后的脚本怎么样?该脚本反映了以上流程。
function untitle() {
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getActiveSheet();
var range = sheet.getRange('D2:D5');
var range2 = sheet.getRange('E2:E5');
var cell = '=IMPORTXML(C2, "/html/body/div[2]")';
range.setFormula(cell);
var values;
while (r != 4) {
values = range.getValues();
var r = values.filter(function(e) {return e[0]}).length;
}
var res = values.map(function(e, i) {return e[0] == "#N/A" || e[0] == "" ? ['=IMPORTXML(C' + (i + 2) + ', "/html/body/div[3]")'] : [""]});
range2.setFormulas(res);
}