2017-06-17 49 views
0
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); 
    } 
} 

此代碼通過創建一個電子表格名稱爲'CSV'的文件夾添加到電子表格中來創建CSV文件。我一直無法阻止它每次創建一個新文件夾,因爲我希望每次更新數據時都要將csv文件放置在此特定文件夾中。我知道我需要查看文件夾是否存在,如果沒有,請先創建它,否則只需將csv文件放入現有文件夾(或創建的文件夾)即可。這聽起來很簡單,但我一直無法做到。如何避免在Google雲端硬盤中創建重複文件夾

回答

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; 
} 
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); 
} 
相關問題