使用GoogleFinance连接下载CSV GoogleSheet

时间:2016-11-03 02:04:43

标签: csv google-sheets

我们有一张Google表格可以下载GoogleFinance数据(原始数据,适用于滚动日期框架的每一天)。

=googleFinance("CURRENCY:USDNZD","price", B2,C14,"daily")

但是,每当我们尝试将文件下载到CSV时,googleFinance公式中的值就会消失,我们会留下“#N / A”值。

**Google Sheet**
Google finance data (raw, for every day of the rolling date frame)  
Date    Close
10/1/2015 23:58:00  1.56304964
10/2/2015 23:58:00  1.55134983
10/3/2015 23:58:00  1.55134983
10/4/2015 23:58:00  1.55002736
10/5/2015 23:58:00  1.53985973
10/6/2015 23:58:00  1.52854965
10/7/2015 23:58:00  1.51434867

**CSV**
Google finance data (raw, for every day of the rolling date frame)
#N/A

我认为这是因为数据实际上并不存在于Google表格中,而是每个时间间隔动态加载。

在保存为csv时,有没有办法下载数据值?

2 个答案:

答案 0 :(得分:0)

我建议选择适合,Ctrl + C,转到新工作表,编辑,粘贴特殊,仅粘贴值,然后尝试下载。

答案 1 :(得分:0)

我遇到了同样的问题,我通过编写一个脚本解决了这个问题,该脚本将所有值(无公式)复制到新工作表中并仅发布最后一个。

因此在您的电子表格中创建一个新的空工作表,在我的示例中,原始工作表是 Funds,新工作表是 FundsValue。所以只发布FundsValue

然后创建以下脚本(工具->脚本编辑器):

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(), 2);

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

}

在我的示例中,rangeToCopy 仅占用 2 列,如果您需要更多,请更改数字。

因此您可以通过设置触发器将脚本设置为每天从脚本编辑器自动执行。