【问题标题】:Google Sheets: Cache IMPORTXML dataGoogle 表格:缓存 IMPORTXML 数据
【发布时间】:2019-03-05 14:27:46
【问题描述】:

所以我想为自己创建一个简单的电影列表,并希望将 IMDB/Meta/RT 分数保存在一个单元格中。

我可以很好地处理这样的事情:

=IF(ISBLANK(A2),,IFERROR(importxml(("http://www.omdbapi.com/?apikey=**MYKEY**&t="&A2&"&r=xml&tomatoes=true&y=2018"),"root/movie/@imdbRating")/10))

这将返回一个我可以保存在单元格中的值。问题是它并不总是刷新。谷歌表格被窃听、importxml 或 omdbapi。我读过其他人有同样的问题。

典型的行如下所示:

[黑豹] [2018 年 2 月 16 日] [86%] [74%] [97%] [88%]

由于我的数据没有太大变化,我想以某种方式缓存它。因此,如果 importxml 失败,它不会清空单元格,它只会保留最后一个值。也许我可以通过引用另一个选项卡的单元格来做到这一点?我确实尝试过,但是一旦另一个选项卡单元格被清空(因为 importxml 失败),主选项卡的单元格也是如此。

想法?

【问题讨论】:

    标签: google-apps-script google-sheets google-sheets-importxml


    【解决方案1】:

    我相信这需要一个应用程序脚本,它将您对第 1 行所做的每个更改添加到相应的目标列 2 - 如果不为空/NA:

    function onEdit(e) {
      var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      if(sh.getActiveCell().getColumn() == 1) {
        if(e.value && e.value != '#N/A')
          sh.getRange(e.range.rowStart, 2).setValue(e.value);
      }
    }
    

    从菜单转到工具、脚本编辑器并添加脚本。确保在调试器中运行一次并授予所需的权限。

    另外,请注意以下引用:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多