Google sheets 如何避免在Google Drive中创建重复文件夹 函数saveAsCSV(){ var ss=SpreadsheetApp.getActiveSpreadsheet(); var sheets=ss.getSheets(); //根据电子表格的名称创建文件夹 var folder=DriveApp.createFolder(ss.getName().toLowerCase().replace(//g,“'u')+''ucsv'); 对于(变量i=0;i

Google sheets 如何避免在Google Drive中创建重复文件夹 函数saveAsCSV(){ var ss=SpreadsheetApp.getActiveSpreadsheet(); var sheets=ss.getSheets(); //根据电子表格的名称创建文件夹 var folder=DriveApp.createFolder(ss.getName().toLowerCase().replace(//g,“'u')+''ucsv'); 对于(变量i=0;i,google-sheets,Google Sheets,此代码通过创建一个文件夹从电子表格创建CSV文件,该文件夹中添加了电子表格的名称和“CSV”。我无法阻止它每次创建一个新文件夹,因为我希望每次都将csv文件放置在此特定文件夹中以更新数据。我知道我需要查看文件夹是否存在,如果不存在,请先创建它,否则只需将csv文件放在现有文件夹(或创建的文件夹)中即可。这听起来很简单,但我一直无法做到。使用测试下面的函数,尝试{}catch(e){}查找或创建文件夹 注意:此功能检查驱动器上的每个文件夹,因此,如果有大量文件夹,则可能需要将其修改为仅检查文件夹内

此代码通过创建一个文件夹从电子表格创建CSV文件,该文件夹中添加了电子表格的名称和“CSV”。我无法阻止它每次创建一个新文件夹,因为我希望每次都将csv文件放置在此特定文件夹中以更新数据。我知道我需要查看文件夹是否存在,如果不存在,请先创建它,否则只需将csv文件放在现有文件夹(或创建的文件夹)中即可。这听起来很简单,但我一直无法做到。

使用
测试下面的函数,尝试{}
catch(e){}
查找或创建文件夹

注意:此功能检查驱动器上的每个文件夹,因此,如果有大量文件夹,则可能需要将其修改为仅检查文件夹内的文件夹

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);
  }
}

您可以创建一个助手函数来检查文件夹是否存在。如果存在,函数可以返回文件夹;如果不存在,函数可以创建文件夹。在这两种情况下,它都将返回一个文件夹对象

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;
}
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);
}