13

我正在使用谷歌电子表格为我正在做的一些数字数据原型。有没有办法基本上将一个子集导出到文本文件?实际上,我打算做的是将我可以直接包含在另一个项目的构建中的文件导出。我可以从Google Spreadsheets脚本生成文件吗?

那么有没有办法生成一个文本文件下载?

回答

12

如果您有Google Apps帐户,则可以使用DocsList.createFile()创建文本文件并将其保存在文档列表中。

tutorial的第3部分显示了如何将CSV格式的电子表格的选定范围保存为文件列表中的文件。它可以很容易地修改以保存不同的格式。

+0

的已超出DocsList服务不再功能:https://developers.google.com/apps -script /日落 –

1

我在Google Spreadsheet的某些栏目中显示了我的项目的文字。 我把这script tutorial from Google和修改它只选择一个特定的范围(在下面的例子中是D4:D)。

它在您的Drive根文件夹中生成一个CSV文件。它仍然不下载文件 - 我现在正在处理这个文件。

希望它有帮助!

/*下面的代码是从本教程的变形例:https://developers.google.com/apps-script/articles/docslist_tutorial#section3 */

/* The code below is a modification from this tutorial: https://developers.google.com/apps-script/articles/docslist_tutorial#section3 */ 
 

 
function onOpen() { 
 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
 
    var csvMenuEntries = [{name: "Save as CSV file", functionName: "saveAsCSV"}]; 
 
    ss.addMenu("CSV", csvMenuEntries); 
 
} 
 

 
function saveAsCSV() { 
 
    
 
    // Name the file 
 
    fileName = "quests.csv"; 
 
    // Convert the range data to CSV format 
 
    var csvFile = convertRangeToCsvFile_(fileName); 
 
    // Create a file in the root of my Drive with the given name and the CSV data 
 
    DriveApp.createFile(fileName, csvFile); 
 
} 
 

 
function convertRangeToCsvFile_(csvFileName) { 
 
    // Get from the spreadsheet the range to be exported 
 
    var rangeToExport = SpreadsheetApp.getActiveSpreadsheet().getRange("D4:D"); 
 
    
 
    try { 
 
    var dataToExport = rangeToExport.getValues(); 
 
    var csvFile = undefined; 
 

 
    // Loop through the data in the range and build a string with the CSV data 
 
    if (dataToExport.length > 1) { 
 
     var csv = ""; 
 
     for (var row = 0; row < dataToExport.length; row++) { 
 
     for (var col = 0; col < dataToExport[row].length; col++) { 
 
      if (dataToExport[row][col].toString().indexOf(",") != -1) { 
 
      //dataToExport[row][col] = "\"" + dataToExport[row][col] + "\""; 
 
      dataToExport[row][col] = dataToExport[row][col]; 
 
      } 
 
     } 
 

 
     // Join each row's columns 
 
     // Add a carriage return to end of each row, except for the last one 
 
     if (row < dataToExport.length-1) { 
 
      csv += dataToExport[row].join(",") + "\r\n"; 
 
     } 
 
     else { 
 
      csv += dataToExport[row]; 
 
     } 
 
     } 
 
     csvFile = csv; 
 
    } 
 
    return csvFile; 
 
    } 
 
    catch(err) { 
 
    Logger.log(err); 
 
    Browser.msgBox(err); 
 
    } 
 
}

相关问题