function saveAsCSV() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
// create a folder from the name of the spreadsheet
var folder = DriveApp.createFolder(ss.getName().toLowerCase().replace(/ /g,'_') + '_csv');
for (var i = 0 ; i < sheets.length ; i++) {
var sheet = sheets[i];
// append ".csv" extension to the sheet name
fileName = sheet.getName() + ".csv";
// convert all available sheet data to csv format
var csvFile = convertRangeToCsvFile_(fileName, sheet);
// create a file in the Docs List with the given name and the csv data
folder.createFile(fileName, csvFile);
}
}
此代码通过使用电子表格的名称创建一个包含&#39; CSV&#39;的电子表格来创建CSV文件。添加到它。我一直无法阻止它每次创建一个新文件夹,因为我希望每次都将csv文件放在这个特定的文件夹中来更新数据。我知道我需要查看该文件夹是否存在,如果没有,请先创建它,否则只需将csv文件放在现有文件夹(或已创建的文件夹)中。这听起来很简单,但我无法做到。
答案 0 :(得分:1)
您可以创建一个帮助函数来检查文件夹是否存在。如果它存在,该函数可以返回该文件夹,如果不存在,则可以创建该文件夹。在这两种情况下,它都将返回一个文件夹对象。
function yourFunction() {
/*
some code
....
*/
//Get the folder by calling the helper function.
var folder = getFolder("nameOfFolder");
//Create a file in the folder
folder.createFile("fileName", csvFile)
/*
some more code
....
*/
}
//Returns the folder or creates it if it doesn't exist.
function getFolder(folderName) {
var f = DriveApp.getFoldersByName(folderName);
return f.hasNext() ? f.next() : DriveApp.createFolder(folderName);
}
答案 1 :(得分:0)
使用try{}
catch(e){}
测试下面的功能,以查找或创建文件夹。
注意:此功能会检查驱动器上的每个文件夹,因此如果您有大量文件夹,则可能需要将其修改为仅在文件夹中检查。
function testFolder(folderName){
var exist = false;
for(var i in targetFolders){
var parentFolder = DriveApp.getFolderById(targetFolders[i]);
var childFolders = parentFolder.getFolders();
while(childFolders.hasNext()) {
var child = childFolders.next();
Logger.log('listFolders ' + child.getName());
if(child.getName() == folderName){
exist=true;
break;
}
}
}
return exist;
}