使用脚本添加编辑器会抛出"无效的电子邮件"并停止脚本



我正在使用Apps Script生成一个包含来自谷歌表单的响应的文档,并将其存储在一个新文件夹中。我还允许用户根据他们提供的电子邮件提交表单编辑器访问权限。

.addEditor(email);

这似乎适用于使用g-suite的谷歌域或公司域。

然而,当电子邮件不是基于谷歌时,脚本就会中断。

'Invalid email: email@example.com'

正在寻找跳过此错误并完成脚本的方法。

function autoFillGoogleDocFromForm(e) {
var Timestamp = e.values[0];
var email = e.values[1];
var file = DriveApp.getFileById('FILEID');
var folder = createfolder(); 
var copy = file.makeCopy(Name + ' - Document', folder); 
var newId = copy.getId();
var doc = DocumentApp.openById(newId).addEditor(email);

var body = doc.getBody();
body.replaceText('{{Timestamp}}', Timestamp); 
body.replaceText('{{Email}}', Email);  
doc.saveAndClose();                                             

}

正在寻找跳过此错误并获得脚本的方法完成

如果您正在寻找跳过错误的解决方案,那么您可以始终使用try。。。捕获:

function autoFillGoogleDocFromForm(e) {
var Timestamp = e.values[0];
var email = e.values[1];
var file = DriveApp.getFileById('FILEID');
var folder = createfolder(); 
var copy = file.makeCopy(Name + ' - Document', folder); 
var newId = copy.getId();

try{
var doc = DocumentApp.openById(newId).addEditor(email);
}
catch(error){
var doc = DocumentApp.openById(newId);
}

var body = doc.getBody();
body.replaceText('{{Timestamp}}', Timestamp); 
body.replaceText('{{Email}}', Email);  
doc.saveAndClose();                                             

}

此代码段将try执行var doc = DocumentApp.openById(newId).addEditor(email);

如果后者失败,那么它将只打开文档var doc = DocumentApp.openById(newId);并继续执行其余代码。

最新更新