Google sheets 如何将IMPORTXML用于数百个URL';s
基本上我有一排300多个URL 我需要在下一列中提取每个URL旁边的标题 所以我试了一下: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")} 正如其他人建议的,它仍在加载(相同的问题
=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不幸的是,不可能