I try to run a code below. The code moves gmail attachment to the defined folders.
It returns error "Object FolderIterator cannot find function getId".
the code stops at var folderID = folder.getId()
Folder is defined by DriveApp
Why cannot Object FolderIterator find function getId?
function sendtoDrive() {
var ss1 = SpreadsheetApp.openById(SpreadSheetID);
var ash = ss1.getSheets()[0];
var dr = ash.getDataRange();
var lr = dr.getLastRow();
var dvs = dr.getValues();
var n=0;
var properties = PropertiesService.getScriptProperties();
for(n=1;n<lr;n++ ){
try {
var sdr = dvs[n][0];
try {
var folder = DriveApp.getFoldersByName(sdr);
}
catch (e) {
try {
var folder = DriveApp.createFolder(sdr);
}
catch (e) {
Logger.log(e.message);
throw e;
}
}
var mailsAlreadyProcessed = properties.getProperty(sdr);
if(mailsAlreadyProcessed == undefined){
var folderID=folder.getId()
properties.setProperty(sdr, folderID + ',');
var mailsAlreadyProcessed = properties.getProperty(sdr);
}
var label = GmailApp.getUserLabelByName(sdr);
var labelDone = GmailApp.getUserLabelByName('Done');
var threads = label.getThreads();
if (threads.length > 0) {
var folderId = mailsAlreadyProcessed.split(',')[0];
var folder = DriveApp.getFolderById(folderId);
for (i in threads) {
if (threads[i].getLabels() != 'Done') {
var messages = threads[i].getMessages();
for (j in messages) {
var attachments = messages[j].getAttachments();
if (attachments.length > 0 && mailsAlreadyProcessed.indexOf(messages[j].getId()) == -1) {
mailsAlreadyProcessed += messages[j].getId();
for (k in attachments) {
var file = attachments[k];
folder.createFile(file);
Utilities.sleep(100);
}
ScriptProperties.setProperty('mailsAlreadyProcessed', mailsAlreadyProcessed);
}
}
labelDone.addToThread(threads[i]);
label.removeFromThread(threads[i]);
Utilities.sleep(100);
}
}
}
}
catch (e) {
Logger.log(e.message);
throw e;
}
}
}