谷歌应用程序脚本- Gmail -错误处理时,没有消息/线程



希望有人能帮助我处理'错误'在我的脚本当没有消息/线程发现。我认为我已经完成了基于消息的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时,出现错误。
  • 如果附件文件不包含,则出现错误。
  • 在您的脚本中,FolderLastRow没有声明。

当这些要点反映在您的脚本中时,如何进行以下修改?

修改脚本:

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类型相关的错误可能是可以避免的。

最新更新