我正在使用Google表格为我正在制作的程序创建数据。我所做的是使用Google表格构建数据,然后以CSV格式下载,并将其复制到应用程序文件夹。
问题是,现在我的数据中有很多张(标签)并逐个下载它们有点麻烦。
所以我认为我会使用Google Apps脚本来创建一个功能,将它们全部转换为CSV,压缩它们,并将它们作为下载文件发送到客户端。
这可行吗?任何人对如何有任何建议?
答案 0 :(得分:4)
将工作表转换为CSV
请参阅 教程:与您的文档列表进行交互 中的Saving a selected Range to a CSV file。
如果您为此创建临时文件夹,然后在该文件夹中生成CSV文件,您将简化以后的zip和清理操作。
从驱动器中压缩多个文件
见Utilities.zip(blobs, name)。如果所有的zip文件都在一个临时文件夹中,那么你应该可以这样做:
function zipSheets() {
var name = 'All CSV Files.zip';
var folderName = 'Temp CSV Files';
var folder = DriveApp.getFoldersByName(folderName).next();
var csvFilesIterator = folder.getFiles();
var csvFiles = [];
while (csvFilesIterator.hasNext()) {
csvFiles.push(csvFilesIterator.next().getBlob());
}
// Create zip file on google drive
var zipBlob = Utilities.zip(csvFiles, name);
var zipFile = DriveApp.createFile(zipBlob);
// NOTE: sharing permissions not set
// get URL of zip file, and display to user.
// ASSUMES you've launched this from a spreadsheet menu
var url = DriveApp.getFilesByName(name).next().getUrl();
var htmlApp = HtmlService
.createHtmlOutput('<p>Zip file URL: '+url+'</p>')
.setTitle('Zip file created')
.setWidth(800)
.setHeight(70);
SpreadsheetApp.getActiveSpreadsheet().show(htmlApp);
}
向客户端发送新创建的zip文件的下载URL。
请参阅File.getUrl(),使用它来获取zip文件的URL。 (上面的示例演示了此功能。)将其嵌入电子邮件中,以便客户端可以单击它。点击后,他们将从谷歌驱动器访问zip文件,因此您还应确保正确设置共享。
或者,您可以将zip文件附加到电子邮件中,从而避免与云端硬盘共享。
清理临时CSV文件&amp;文件夹。
如果您选择通过电子邮件将zip文件作为附件发送,您也可以删除临时zip文件。