google-apps-script - 无法获取最新数据
问题描述
我正在尝试使用 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);
}
解决方案
对于同一个 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 每次都会不同。
推荐阅读
- c# - 有没有办法找到未等待的任务?
- sql - 使用 SQL Developer 连接到 Oracle 12C 数据库服务器 (12.2.0)
- ios - 为 TableView Cell 设置值时出现致命错误
- swiftui - SwiftUI 如何创建一个将项目添加到包含导航链接的列表的按钮
- ios - swift ios 13 屏幕亮度问题
- .net - Can we mix different request type together in one method?
- r - R: How to aggregate several data frames into a txt file via for loop?
- excel - 多个从属组合框Excel VBA
- javascript - 替换元素内容的函数说我的元素为空
- excel - 如何设置日值;在 Excel-VBA 中使用 Selenum-Chrome-Webdriver