希望有人能帮助我处理'错误'在我的脚本当没有消息/线程发现。我认为我已经完成了基于消息的IF语句。长度,但它不工作,仍然错误,当没有找到匹配输入的搜索条件(e)的电子邮件。它工作完美,每次找到一个消息。
多谢。Moz
function ImportCDWFiles(e){
var Threads = GmailApp.search(e,0,1);
var Message = Threads[0].getMessages()[0];
var Attachment = Message.getAttachments()[0];
if (Threads.length >0){
Logger.log(Threads.length);
Logger.log(Attachment.getName())
var SourceFile = Folder.createFile(Attachment.copyBlob())
var SourceID = SourceFile.getId();
var XlsxBlob = Attachment[0]; //
var ConvertedSpreadsheetId = Drive.Files.insert({mimeType: MimeType.GOOGLE_SHEETS}, SourceFile).id; //XlsxBlob
Logger.log("Converted File ID= "+ ConvertedSpreadsheetId)
var Sheet = SpreadsheetApp.openById(ConvertedSpreadsheetId).getSheets()[0]; // There is the data in 1st tab.
var Data = Sheet.getDataRange().getValues();
//var Data = Sheet.getDataRange().offset(headerRowNumber, 0, sheet.getLastRow() - headerRowNumber).getValues();
var sheet = SpreadsheetApp.openById('SheetIDHere').getSheetByName('SheetName');
var range = sheet.getRange(LastRow+1, 1, Data.length, Data[0].length);
range.setValues(Data);
Drive.Files.remove(ConvertedSpreadsheetId); // Remove the converted file.
}
}
修改点:
- 在
var Message = Threads[0].getMessages()[0]
,当Threads
的长度为0
时,出现错误。 - 如果附件文件不包含,则出现错误。
- 在您的脚本中,
Folder
和LastRow
没有声明。
当这些要点反映在您的脚本中时,如何进行以下修改?
修改脚本:
function ImportCDWFiles(e) {
var Folder = DriveApp.getFolderById("###"); // Please set your folder ID.
var Threads = GmailApp.search(e, 0, 1);
if (Threads.length == 0) return;
var Message = Threads[0].getMessages()[0];
var Attachment = Message.getAttachments();
if (Attachment.length == 0) return;
Attachment = Attachment[0];
Logger.log(Attachment.getName())
var SourceFile = Folder.createFile(Attachment.copyBlob());
var ConvertedSpreadsheetId = Drive.Files.insert({ mimeType: MimeType.GOOGLE_SHEETS }, SourceFile).id;
Logger.log("Converted File ID= " + ConvertedSpreadsheetId);
var Sheet = SpreadsheetApp.openById(ConvertedSpreadsheetId).getSheets()[0];
var LastRow = Sheet.getLastRow();
var Data = Sheet.getDataRange().getValues();
var sheet = SpreadsheetApp.openById('###').getSheetByName('###'); // Please set your values.
var range = sheet.getRange(LastRow + 1, 1, Data.length, Data[0].length);
range.setValues(Data);
Drive.Files.remove(ConvertedSpreadsheetId);
}
注意:
- 不幸的是,从你的问题中,我无法知道附件文件的mime类型。因此,我无法实现检查附件文件的mime类型。如果你能知道,当这个检查被实现时,与mime类型相关的错误可能是可以避免的。