2016-07-14 47 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

这完全没有的伎俩!非常感谢你教育我并修复它,不能告诉你这是多少救星! –

相关问题