1

在 Google 电子表格中,我使用脚本编辑器在 D2: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 包括网站的地址。

如果单元格 D2:D5中没有任何内容,我想在 E2:E5 之间进行相同的思考

我能怎么做?

编辑我:

我使用带有 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);
};

我想使用两个功能。

  • 首先,在 D2:D5 中获取信息
  • 第二,如果 D2:D5 中的结果为空 (#N/A),则在 E2:E5 中获取信息
4

1 回答 1

1
  • 如果“D2:D5”的单元格有值和/或公式,则要将公式放入“D2:D5”。
  • 如果“D2:D5”的单元格没有值和/或公式,则要将公式放入“E2:E5”。

如果我对你的问题的理解是正确的,那么这个修改怎么样?我认为您的情况有几个答案。因此,请将此视为其中之一。

流动:

修改脚本的流程如下。

  1. 从单元格“D2:D5”中检索值和公式。
  2. 如果单元格中有值或公式,请将公式放入“D2:D5”。
  3. 如果单元格中没有值或公式,请使用 将公式放入“E2:E5” offset()

修改后的脚本:

请进行如下修改。

从:
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);
}

笔记:

  • 如果您想在“D2:D5”中只有公式的情况下将公式放入“E2:E5”,请formulas从脚本中删除。

参考:

如果我误解了你的问题,请告诉我。我想修改它。

添加:

  1. 将公式代cell入“D2:D5”。
  2. 检索公式的结果。
  3. 将检索结果中的公式放入cell2“E2:E5”。
    • var cell2 = '=IMPORTXML(C2, "/html/body/div[3]")';
    • 在这种情况下,当 "D2:D5" 的结果为"#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);
}
于 2018-10-01T00:35:20.420 回答