如何在 Google 工作表中的 importxml 公式中定义范围

How to define range in importxml formula in Google Sheets

在我的 google sheet 中,我在 A1 中有 URL,在 B1、C1、D1、E1 等中有其他数据...我想使用 importxml 公式但是想要这项工作自动进行,我的意思是在 B2 列中我试试这个

=ARRAYFORMULA( IMPORTXML($A1&$B1:$CZ1, "//suggestion/@data"))  

所以它会自动完成剩下的工作我的意思是在 B2 中获取 A1 和 B1 的数据,在 C2 中获取 A1 和 C1,在 D2 中获取 A1 和 D1,这可能吗?我的意思是现在我必须在每一列中手动输入公式。希望你明白我的意思。

Column A   | Column B    | Column C
=================================
site.com   | Name 1      | Name 2
           |             |  
           |             |  
           |             |  

Column A   | Column B    | Column C
=================================
site.com   | Name 1      | Name 2
           | =ARRAYFORMULA( IMPORTXML($A1&$B1:$CZ1, "//name/@data"))  
           |             |  
           |             |  
如您所料,

IMPORTXMLARRAYFORMULA 中不受支持。您的选择是:

  • 粘贴到B2,然后将公式拖到右边

    =IMPORTXML($A1&B1, "//suggestion/@data")
    

  • B2 中粘贴所有列的硬编码公式:

    ={IMPORTXML(A1&B1, "//suggestion/@data"),
      IMPORTXML(A1&C1, "//suggestion/@data"),
      IMPORTXML(A1&D1, "//suggestion/@data")}
    

或脚本解决方案:

function onOpen() {
    var sheet = SpreadsheetApp.getActiveSheet();
    var length = sheet.getRange("B2:2").getValues().filter(String).length;
    sheet.getRange("C3:3").clearContent();
    sheet.getRange("C3:3" + length).setFormula(sheet.getRange("B3").getFormula());
    sheet.getRange("C4:1000").clearContent();
    }

其中单元格 B2 是:

=ARRAYFORMULA(A1&B1:D1)

单元格 B3 是:

=ARRAYFORMULA(IFERROR(IMPORTXML(B2:2, "//suggestion/@data")))