如何确保以 CSV 格式发布的 GoogleSheet 上的附加公式的正确值
How to ensure correct value from add-on formula on a GoogleSheet published as CSV
通过创建一个使用来自附加组件 (muFund) 的公式的 GoogleSheet,
如果我在网络上发布 CSV 并将其作为源导入到我的 power bi 报告中,
通常(只有几次它工作正常)使用 muFund
函数计算的整个列显示标签 #NAME?
而不是正确的值。
如何确保通过“附加公式”计算的值将输出连贯的 CSV?
google sheet 就是这个:
如您所见,公式为 =muFunds("nav";A2)
可能通过下载上面的文件,一切都会顺利...但有时可能会发生 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"
问题来了:
有什么建议吗?
这个问题似乎与 google 发布有关,它可能比公式计算更快,因此该值计算不正确。
出于这个原因,我制作了一个小脚本,以便将所有值 (Funds
) 复制到另一个 sheet (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});
}
在此所有值都得到了正确处理,因此我还添加了一个每天自动执行脚本的触发器
通过创建一个使用来自附加组件 (muFund) 的公式的 GoogleSheet,
如果我在网络上发布 CSV 并将其作为源导入到我的 power bi 报告中,
通常(只有几次它工作正常)使用 muFund
函数计算的整个列显示标签 #NAME?
而不是正确的值。
如何确保通过“附加公式”计算的值将输出连贯的 CSV?
google sheet 就是这个:
如您所见,公式为 =muFunds("nav";A2)
可能通过下载上面的文件,一切都会顺利...但有时可能会发生 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"
问题来了:
有什么建议吗?
这个问题似乎与 google 发布有关,它可能比公式计算更快,因此该值计算不正确。
出于这个原因,我制作了一个小脚本,以便将所有值 (Funds
) 复制到另一个 sheet (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});
}
在此所有值都得到了正确处理,因此我还添加了一个每天自动执行脚本的触发器