【问题标题】:How to ensure correct value from add-on formula on a GoogleSheet published as CSV如何确保以 CSV 格式发布的 GoogleSheet 上的附加公式中的值正确
【发布时间】:2021-06-16 21:49:53
【问题描述】:

通过创建一个使用插件 (muFund) 中的公式的 GoogleSheet, 如果我在网络上发布 CSV 并将其作为我的 power bi 报告的源导入, 通常(只有几次工作正常)使用muFund 函数计算的整个列显示标签#NAME? 而不是正确的值。

如何确保通过“附加公式”计算的值将输出连贯的 CSV?

谷歌表就是这个:

如您所见,公式为=muFunds("nav";A2)

发布的文件 (csv) 如下: https://docs.google.com/spreadsheets/d/e/2PACX-1vS4stYNCZIWp-ScKmCMlR1PHWsxRbsWjykKUhBBpeBcVz9tcDvFewCkgTvUh3QuRTJiRU_w17_H_cma/pub?gid=0&single=true&output=csv

可能通过下载上面的文件,一切都会顺利...但可能有时会发生muFunds的计算值将是#NAME?....这很奇怪。我还发现这个问题没有回答: Download CSV GoogleSheet with GoogleFinance connection

但通过将此 csv 文件与 PowerBI 报告一起使用,该问题在 10 次试验中发生了 9 次。所以我在 Power Query 中为我的报告编写了以下查询

let
    Source = Csv.Document(Web.Contents("https://docs.google.com/spreadsheets/d/e/2PACX-1vS4stYNCZIWp-ScKmCMlR1PHWsxRbsWjykKUhBBpeBcVz9tcDvFewCkgTvUh3QuRTJiRU_w17_H_cma/pub?gid=0&single=true&output=csv"),[Delimiter=",", Columns=3, Encoding=1252, QuoteStyle=QuoteStyle.None]),
    #"I" = Table.PromoteHeaders(Source, [PromoteAllScalars=true])
in
    #"I"

我们遇到了问题:

有什么建议吗?

【问题讨论】:

  • GOOGLEFINANCE 是一个内置函数,它有一些可能与“附加公式”不同的限制。请添加minimal reproducible example,包括一些示例静态数据、自定义函数的使用说明(即每个电子表格只有一个公式、每个电子表格有 10 个公式或任何预期用途)。
  • 感谢回复,我最好把问题写出来。它是我表的整个列(现在只有 10 行),公式实际上不是 GOOGLEFINANCE 而是 muFund。我还编辑了问题
  • 你好@pittuzzo!我知道这个问题是关于如何确保特定的附加功能有效。如果正确,请将相关函数的脚本分享给大家看看。
  • @Jacques-GuzelHeron 感谢您的回复。我最好在我的问题中解释这个问题。你怎么看?太奇怪了……我开始想是因为计算需要一些时间……

标签: google-apps-script google-sheets powerbi export-to-csv


【解决方案1】:

这个问题似乎与google publish有关,它可能比公式计算更快,因此值计算不正确。

出于这个原因,我制作了一个小脚本,以便将所有值 (Funds) 复制到另一张表 (FundsValue) 中,以便可以毫无问题地在 csv 中发布它们。

在以下脚本中:

function daily_copy() {
  var source = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Funds");
  var destination = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("FundsValue");

  var sheet = SpreadsheetApp.getActiveSheet();
  
  var rangeToCopy = source.getRange(1, 1, destination.getMaxRows(), 3);

//Paste to another sheet from first cell onwards
rangeToCopy.copyTo(destination.getRange(1, 1),{contentsOnly:true});

}

在此所有值都得到了正确处理,因此我还添加了一个触发器,该触发器每天自动执行脚本

【讨论】:

    猜你喜欢
    • 2020-03-30
    • 1970-01-01
    • 2018-07-30
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 2020-11-27
    • 2021-11-11
    • 1970-01-01
    相关资源
    最近更新 更多