如何从电子表格导出为 CSV 到驱动器或下载文件夹

Nag*_*het 3 google-apps-script

我尝试过以下脚本不起作用。当我下载为 CSV 格式时,它全部在一列中,而不是标准格式。使用 Google Apps 脚本,如何下载为 CSV 格式并将文件保存在我的驱动器或下载中?

function onOpen() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var csvMenuEntries = [{name: "export as csv files", functionName: "saveAsCSV"}]; 
    ss.addMenu("csv", csvMenuEntries);
};
Run Code Online (Sandbox Code Playgroud)

Tan*_*ike 7

这个脚本怎么样?此脚本从电子表格导出 CSV 文件并让用户下载它。

请将 HTML 和脚本放入 GAS 项目中。

html:

该文件名为“download.html”。

<!DOCTYPE html>
<html>
  <body>
    Download CSV?
    <form>
      <input type="button" value="ok" onclick="google.script.run
                                              .withSuccessHandler(executeDownload)
                                              .saveAsCSV();" />
    </form>
  </body>
  <script>
    function executeDownload(url) {
      window.location.href = url;
    }
  </script>
</html>
Run Code Online (Sandbox Code Playgroud)

脚本 :

function onOpen() {
  SpreadsheetApp.getUi()
                .createMenu('csv')
                .addItem('export as csv files', 'dialog')
                .addToUi();
}

function dialog() {
  var html = HtmlService.createHtmlOutputFromFile('download');
  SpreadsheetApp.getUi().showModalDialog(html, 'CSV download dialog');
}

function saveAsCSV() {
    var filename = "#####"; // CSV file name
    var folder = "#####"; // Folder ID

    var csv = "";
    var v = SpreadsheetApp
            .getActiveSpreadsheet()
            .getActiveSheet()
            .getDataRange()
            .getValues();
    v.forEach(function(e) {
      csv += e.join(",") + "\n";
    });
    var url = DriveApp.getFolderById(folder)
              .createFile(filename, csv, MimeType.CSV)
              .getDownloadUrl()
              .replace("?e=download&gd=true","");
    return url;
}
Run Code Online (Sandbox Code Playgroud)

过程 :

  1. 使用“onOpen()”,它添加了用于启动对话框的菜单。

  2. 启动对话框后,按下按钮即可启动“saveAsCSV()”。“saveAsCSV()”导出 CSV 文件并输出下载 URL。在当前脚本中,将检索活动工作表上的所有数据并将其导出为 CSV。如果您想检索所需的范围,请使用“ getRange() ”。

  3. CSV 文件通过“executeDownload()”下载。

您可以分别通过“文件名”和“文件夹”设置 csv 文件名和输出文件夹。在此示例中,源工作表是当前打开的工作表。如果您想要其他表,请更改此脚本。

如果这对您有帮助,我很高兴。