Ciao a tutti
avrei bisogno di una mano.
ho questo scritp che manda delle email in base ai file modificati nelle ultime ore nel mio drive. Inoltre, converte i file in Excel allegandoli alla mail.
Il problema è che mentre la lista dei file modificati viene scritta senza problemi, la conversione viene fatta solo di un file. come se il pezzo di codice della conversione non entrasse nel loop, ma venisse eseguito solo la prima volta
Grazie per l'aiuto
codice:
var search = '(trashed = false or trashed = false) and (modifiedDate > "' + startTime + '")'; var folder1 = DriveApp.getFoldersByName('SaveToPDF').next();
var files1 = folder1.searchFiles(search);
var row = "", count = "1";
while( files1.hasNext() ) {
var file1 = files1.next();
//inizio conversione
var spreadsheet = file1;
var spreadsheetId = SpreadsheetApp.open(file1).getId();
var file = Drive.Files.get(spreadsheetId);
var url = file.exportLinks[MimeType.MICROSOFT_EXCEL];
var token = ScriptApp.getOAuthToken();
var response = UrlFetchApp.fetch(url, {
headers: {
'Authorization': 'Bearer ' + token
}
});
var fileNameXLS = spreadsheet + '.xlsx';
var blobs = [response.getBlob().setName(fileNameXLS)];
//fine conversione
var fileName = file1.getName();
var fileURL = file1.getUrl();
var lastUpdated = Utilities.formatDate(file1.getLastUpdated(), timezone, "yyyy-MM-dd HH:mm");
var dateCreated = Utilities.formatDate(file1.getDateCreated(), timezone, "yyyy-MM-dd HH:mm")
row += "<li>" + lastUpdated + " <a href='" + fileURL + "'>" + fileName + "</a></li>";
sheet.appendRow([dateCreated, lastUpdated, fileName, fileURL]);
count++;
}
if (row !== "") {
row = "<p>" + count + " file(s) have changed in your Google Drive in the past 24 hours. Here's the list:</p><ol>" + row + "</ol>";
row += "<br><small>To stop these notifications, please <a href='" + ss.getUrl() + "'>click here</a> and choose <em>Uninstall</em> from the Drive Activity menu.<br/></small>";
MailApp.sendEmail(email, "Google Drive - File Activity Report", "", {htmlBody: row,
cc: "xxxx@transcom.com", attachments: blobs} );
}