自动刷新ImportXML Google表格
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动刷新ImportXML Google表格相关的知识,希望对你有一定的参考价值。
我有一个工作表,它从一个站点导入数据,大约有10种导入都略有不同。我想要一种可以每五分钟更新一次的方法。我知道有做到这一点的脚本,但是当我尝试使用它时,只会将?update放在最后并弄乱整个导入。我可以显示我正在使用的脚本。它是从4年前开始的,也许已经过时了。任何帮助,将不胜感激。
还有一个脚本,将=更改为零,然后再次将其重新添加,否则我认为会起作用。
这是我正在使用的脚本
function RefreshImports()
var lock = LockService.getScriptLock();
if (!lock.tryLock(5000)) return; // Wait up to 5s for previous refresh to end.
var id = "Sheets ID";
var ss = SpreadsheetApp.openById(id);
var sheet = ss.getSheetByName("Sheet Name");
var dataRange = sheet.getDataRange();
var formulas = dataRange.getFormulas();
var content = "";
var now = new Date();
var time = now.getTime();
var re = /.*[^a-z0-9]import(?:xml|data|feed|html|range)\(.*/gi;
var re2 = /((\?|&)(update=[0-9]*))/gi;
var re3 = /(",)/gi;
for (var row=0; row<formulas.length; row++)
for (var col=0; col<formulas[0].length; col++)
content = formulas[row][col];
if (content != "")
var match = content.search(re);
if (match !== -1 )
// import function is used in this cell
var updatedContent = content.toString().replace(re2,"$2update=" + time);
if (updatedContent == content)
// No querystring exists yet in url
updatedContent = content.toString().replace(re3,"?update=" + time + "$1");
// Update url in formula with querystring param
sheet.getRange(row+1, col+1).setFormula(updatedContent);
// Done refresh; release the lock.
lock.releaseLock();
// Show last updated time on sheet somewhere
sheet.getRange(12,2).setValue("Rates were last updated at " + now.toLocaleTimeString())
答案
您可以编写脚本来从指定的单元格检索公式并将其设置回计时器上的相同单元格
为此,您需要:
使用getFormula()检索公式>
将公式重新设置为与getFormula()]相同的单元格>
[Bind和您函数的installable time-driven trigger,指定所需的间隔
示例:
function setMeOnTrigger()
var sheet = SpreadsheetApp.getActive().getActiveSheet();
var cell = sheet.getRange("C1");
cell.setFormula(cell.getFormula())
以上是关于自动刷新ImportXML Google表格的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Google 表格中找出 IMPORTXML 的正确 xpath - 收到错误?