Google sheets 如何将IMPORTXML用于数百个URL';s

Google sheets 如何将IMPORTXML用于数百个URL';s,google-sheets,google-sheets-formula,spreadsheet,Google Sheets,Google Sheets Formula,Spreadsheet,基本上我有一排300多个URL 我需要在下一列中提取每个URL旁边的标题 所以我试了一下: =IMPORTXML(A1,"//title") 然后把它拖到300+-它可以工作,问题是它调用的东西太多了,谷歌告诉我,我一直等到最后2页才无意中刷新了页面,然后又重新刷新了页面 我还尝试: ={IMPORTXML(A1,"//title");IMPORTXML(A327,"//title")} 正如其他人建议的,它仍在加载(相同的问题

基本上我有一排300多个URL

我需要在下一列中提取每个URL旁边的标题

所以我试了一下:

=IMPORTXML(A1,"//title")
然后把它拖到300+-它可以工作,问题是它调用的东西太多了,谷歌告诉我,我一直等到最后2页才无意中刷新了页面,然后又重新刷新了页面

我还尝试:

={IMPORTXML(A1,"//title");IMPORTXML(A327,"//title")}  
正如其他人建议的,它仍在加载(相同的问题)

有更好的方法吗?

不幸的是。此外,当有数百个单元格包含IMPORTXML函数时,如果将有多个IMPORTXML请求,则此函数的结果可能会重新加载

备选选项

您可以通过(见下文)在电子表格文件中尝试此示例,该文件将为您提供自定义菜单:

此脚本将使用而不是IMPORTXML函数来获取URL的标题

示例脚本:

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('URL titles')
      .addItem('Show URL titles on Column B', 'processTitles')
      .addToUi();
}

function processTitles(){
  var ss = SpreadsheetApp.getActive().getActiveSheet();
  var lastRow = ss.getDataRange().getLastRow();
  var url;
  
  for(row=1; row<= lastRow; row++){ //Script will start getting URL from A1 and beyond
    if(ss.getRange("B"+row).getValue() == ""){
        try{
          url = ss.getRange("A"+row).getValue();
          var response = UrlFetchApp.fetch(url).getContentText();
          ss.getRange("B"+row).setValue(response.match('<title>(.*?)</title>')[1])
          Logger.log(response.match('<title>(.*?)</title>')[1].toString());
          continue;
        }catch(e){
          ss.getRange("B"+row).setValue(response.match('title="(.*?)"')[1]);
          Logger.log(response.match('title="(.*?)"')[1].toString());
          continue;
        }
    }else{
      continue;
    }
  }
}
函数onOpen(){ var ui=SpreadsheetApp.getUi(); ui.createMenu(“URL标题”) .addItem('在列B上显示URL标题','处理标题') .addToUi(); } 函数processTitles(){ var ss=SpreadsheetApp.getActive().getActiveSheet(); var lastRow=ss.getDataRange().getLastRow(); var-url;
for(row=1;row不幸的是,不可能