【问题标题】:Automatically updating csv file in sheets自动更新工作表中的 csv 文件
【发布时间】:2021-11-21 04:50:59
【问题描述】:

我的电脑中有一个 csv 文件,每小时更新一次。我也尝试在谷歌表格中自动更新。

这是我使用的公式

=IMPORTDATA("C:\Users\octav\Documentos\Movers\RD\ALGO-USD.csv")

我收到错误代码#N/A

这与公式参数有关吗? bc 它向我询问 url,我正在放置文件路径

如果我的公式有问题,或者我正在尝试的东西在表格中是不可能的,有人可以告诉我吗?

【问题讨论】:

  • IMPORTDATA 从公开共享的 URL 中检索数据。不幸的是,在当前阶段,IMPORTDATA 无法直接从本地 PC 检索文件。例如,将 CSV 文件放入公开共享站点时,可以使用IMPORTDATA 检索它。当 CSV 文件放入需要授权的存储时,Google Apps 脚本可能能够检索它。对于这种情况,我深表歉意。
  • 感谢您的帮助。我尝试了另一种导入数据的方法。我将本地文件同步到具有 csv 文件的 Google Drive,但是当我将 csv 从 Drive 导入到我的电子表格时,我得到了一种完全不同的格式。它有点像很多随机公式,没有 csv 信息
  • 感谢您的回复。我不得不为我糟糕的英语水平道歉。不幸的是,来自I sync the local file to Google Drive wich has the csv file, however I got a really different format when I import the csv from Drive to my spreadsheet. Its something like a lot of random formulas and no csv information,我无法想象您的问题的细节。我能问你关于你当前问题的细节吗?而且,您能否提供正确复制当前问题的详细方法?
  • 当然,感谢您的帮助。我将添加一些图像和电子表格链接。 drive.google.com/file/d/1A3Neas52UhmvEQ3QaaqV2VheAXDStj9M/…(在那张照片中,您将看到 csv 的外观。在电子表格中,您会看到完全不同。公式在单元格 A1 中。这是电子表格链接。docs.google.com/spreadsheets/d/…跨度>
  • 感谢您回复和更新您的问题。根据您的回复,我提出了一个示例脚本作为答案。你能确认一下吗?如果这没有用并且我误解了您的问题,我深表歉意。

标签: excel csv google-apps-script google-sheets google-sheets-formula


【解决方案1】:

当我看到您的电子表格时,我发现了以下公式。

=IMPORTDATA("https://drive.google.com/file/d/###/view?usp=sharing")

在这种情况下,即使文件是 CSV 数据,也会返回 HTML。我认为这可能是您的问题的原因。为了避免这个问题,下面的模式怎么样?我认为以下两种模式之一可能适用于您的情况。

模式一:

在此模式中,CSV 数据使用公式 IMPORTDATA 加载。为此,请执行以下流程。

  1. 公开共享 CSV 文件。
  2. 输入公式=IMPORTDATA("https://drive.google.com/uc?export=download&id=###")
    • 请将###替换为您的CSV文件ID。

模式2:

在此模式中,CSV 数据是使用 Google Apps 脚本加载的。请将以下脚本复制并粘贴到电子表格的脚本编辑器中。并且,请设置您的 CSV 文件的文件 ID 并运行myFunction。这样,CSV 数据将被放入工作表Sheet1。当您要更换工作表时,请修改Sheet1

function myFunction() {
  const fileId = "###"; // Please set the file ID of CSV file on your Google Drive.
  const csv = DriveApp.getFileById(fileId).getBlob().getDataAsString();
  const values = Utilities.parseCsv(csv);
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
  sheet.getRange(1, 1, values.length, values[0].length).setValues(values);
}

参考资料:

【讨论】:

    猜你喜欢
    • 2022-10-07
    • 2018-08-09
    • 2015-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多