首页 > 解决方案 > 无法获取最新数据

问题描述

我正在尝试使用 Google 电子表格中的 IMPORTXML 函数获取网络数据。它只是第一次工作,此后它没有得到最新的数据,只返回我以前的数据。

我尝试通过创建不同的工作表、不同的网站但遇到相同的问题。即使我直接粘贴公式

=IMPORTXML("https://money.cnn.com/data/us_markets/","(//div[@class='bannerQuote']/span)[2]")

仍然进入单元格,它只在第一次工作,然后它返回我旧值。

  function f1() {
var sheetName = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); 
var queryString = Math.random(); 
var xpaths = "//span[@id='ct']";
var cellFunction = '=IMPORTXML("https://www.timeanddate.com/worldclock/india","'+xpaths+'")';
var cell1= sheetName.getRange("A5");
cell1.clearContent();
sheetName.getRange('A5').setValue(cellFunction); 
var xpaths1 ="(//div[@class='bannerQuote']/span)[2]";
var cellFunction1 = '=IMPORTXML("https://money.cnn.com/data/us_markets","'+xpaths1+'")';
sheetName.getRange('A6').setValue(cellFunction1); 
}

标签: google-apps-scriptgoogle-sheets

解决方案


对于同一个 URL,Google 会将结果缓存大约两个小时,因此您需要在 URL 中添加一个带有随机数的片段标识符 (#),如下所示:

function f1() {
  var sheetName = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); 
  var queryString = Math.round(Math.random()*100000); 
  var xpaths = "//span[@id='ct']";
  var cellFunction = '=IMPORTXML("https://www.timeanddate.com/worldclock/india#' + queryString + '","'+xpaths+'")';
  var cell1= sheetName.getRange("A5");
  cell1.clearContent();
  sheetName.getRange('A5').setValue(cellFunction); 
  var xpaths1 ="(//div[@class='bannerQuote']/span)[2]";
  var cellFunction1 = '=IMPORTXML("https://money.cnn.com/data/us_markets#' + queryString + '","' + xpaths1+'")';
  sheetName.getRange('A6').setValue(cellFunction1); 
}

这样您使用的 URL 每次都会不同。


推荐阅读