【问题标题】:Force refresh ImportXML强制刷新 ImportXML
【发布时间】:2017-06-24 21:05:14
【问题描述】:

我想强制 importXML 每五分钟自动刷新一次。这是我尝试运行的脚本并收到错误 "Bad value (line 7, file "RefreshImports" 。我不知道为什么。我在这里找到了它:Periodically refresh IMPORTXML() spreadsheet function

function RefreshImports() {
  var lock = LockService.getScriptLock();
  if (!lock.tryLock(5000)) return; // Wait up to 5s for previous 
  refresh to end.

  var id = "[YOUR SPREADSHEET 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(7, 2).setValue("Rates were last updated at " +
    now.toLocaleTimeString())
}

在显示“[YOUR SPREADSHEET ID]”的代码中,我输入电子表格的名称是否正确?我对此一无所知。

这里是my sheet

【问题讨论】:

  • 我们需要更多关于您在做什么的详细信息,而不仅仅是几个链接。虽然链接可能会有所帮助,但问题应该是自包含的。
  • 好的,我不确定您需要什么,但我会尝试这样问:当我将以下脚本粘贴到工作表中的脚本编辑器中时,为什么不会为我运行?跨度>
  • 我不知道如何像在我链接的线程中那样在此处发布代码。文本编辑器在哪里?
  • 点击edit链接
  • Tks 鲁本。我已经更新了。如果需要,请告诉我更多信息。

标签: google-sheets formulas


【解决方案1】:

[YOUR SPREADSHEET ID] 上,您应该添加电子表格 ID,而不是名称。

电子表格ID

https://docs.google.com/spreadsheets/d/1Xhgfr3z4EwPtjS4aahytU_3TOVxjNb8JvHo88h3nZaE/edit#gid=14522064

1Xhgfr3z4EwPtjS4aahytU_3TOVxjNb8JvHo88h3nZaE

【讨论】:

  • Tks 我在哪里可以找到“工作表名称”?
【解决方案2】:

我发现使用 URL 代替 id 更容易,这是代码:

var url = "URL OF SPREADSHEET"; 
var sheetName = "NAME OF SPECIFIC SHEET";
var ss = SpreadsheetApp.openByUrl(url);
var sheet = ss.getSheetByName(sheetName);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多