2016-07-14 117 views
0

我是JavaScript和Google應用程序編碼的新手。我正在創建一個數據庫,每晚自動將新用戶更新爲聚合表。我的searchfolder()函數不會執行,因爲我不斷收到錯誤「TypeError:找不到函數hasNext在對象Thu Jul 14 09:48:01 PDT 2016 INFO:Target。(第24行,文件每日工作) 「TypeError:找不到對象中的函數hasNext(具有日期ID的文件夾)

var中的文件有DriveApp.getFolderById(folderId)後.getfiles,所以我沒有絲毫的想法是什麼問題

CODE:

var counter = 0; 

function timeStamp(){ 
counter= (counter+1) 
} 

var files = "null" 

function searchFolder() { 
    var folderId = '0B6wmHZ5c0fzfTjI1bFpKOHI3N3M'; // test folder 
    // Log the name of every file in the folder. 
var files = DriveApp.getFolderById(folderId).getFiles(); //log files in  
folder 
    while (files.hasNext()) { //loop log files in folder 
    var file = files.next(); //log files in folder 
    Logger.log(file.getName()); //logs name of file in folder 
    var files = Logger.getLog(); 
    } 
} 

function autoUpdate(){ //updates monthly from newly imported daily 
    if (counter == 1){ //counter is made to be 1 when day is uploaded to 
    monthly 
    var ss =  
    SpreadsheetApp.openById("1lH9Y12P2Q2OFndIJoAU48ePggXFc9WGcWjolZMcABoc"); 
    //defines target spreadsheet ie monthly 
    SpreadsheetApp.setActiveSpreadsheet(ss); //sets target spreadsheet as 
    active 
    var range= ss.getRange("A1:A1"); 
    range.activate; // activates range 
    range.setValue('=IMPORTRANGE("1K7Rj4QK- 
    EVjf8lZ0BSew7iDeCtktqWjzgjoaVPe5jSc","sheet1!A1:G6")'); //Puts in 
    IMPORTRANGE into target as a STRING value (just words). Once it hits the 
    sheet, then SHEETS executes IMPORTRANGE not SCRIPTS. In Source sheet, 
    range is selected to import to target (ie A1:G6) 
    counter=(counter-1) 
    } 
} 

//searchFolder(); 
timeStamp(); 
autoUpdate(); 

回答

0

你聲明的變量files兩次。另外,推入日誌然後取回日誌是不好的做法。更好地使用數組。你得到一個錯誤,因爲變量files你存儲的文件名在第一次循環後更改爲日誌上下文,這意味着在你的files對象(它不是string類型)中沒有更多功能hasNext

var counter = 0; 

function timeStamp(){ 
counter= (counter+1) 
} 

var files = []; 

function searchFolder() { 
    var folderId = '0B6wmHZ5c0fzfTjI1bFpKOHI3N3M'; // test folder 
    // Log the name of every file in the folder. 
var filesN = DriveApp.getFolderById(folderId).getFiles(); //log files in folder 
    while (filesN.hasNext()) files.push(filesN.next().getName()); 
} 

function autoUpdate(){ //updates monthly from newly imported daily 
    if (counter == 1){ //counter is made to be 1 when day is uploaded to monthly 
    var ss = SpreadsheetApp.openById("1lH9Y12P2Q2OFndIJoAU48ePggXFc9WGcWjolZMcABoc"); 
    //defines target spreadsheet ie monthly 
    SpreadsheetApp.setActiveSpreadsheet(ss); //sets target spreadsheet as 
    active 
    var range= ss.getRange("A1:A1"); 
    range.activate; // activates range 
    range.setValue('=IMPORTRANGE("1K7Rj4QK-EVjf8lZ0BSew7iDeCtktqWjzgjoaVPe5jSc","sheet1!A1:G6")'); //Puts in IMPORTRANGE into target as a STRING value (just words). Once it hits the sheet, then SHEETS executes IMPORTRANGE not SCRIPTS. In Source sheet, range is selected to import to target (ie A1:G6) 
    counter=(counter-1) 
    } 
} 

searchFolder(); // After this function all file names are stored in variable `files` 
timeStamp(); 
autoUpdate(); 

如果你想登錄文件夾中的所有文件也一樣,你可以執行Logger.log(files.join('\n'));

+0

這完全沒有的伎倆!非常感謝你教育我並修復它,不能告訴你這是多少救星! –

相關問題