添加带有脚本的编辑器抛出 'Invalid email' 并停止脚本

Adding editor with script throws 'Invalid email' and stops script

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

.addEditor(email);

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

但是,当电子邮件不是 Google 时,脚本会中断。

'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();                                             


}

Looking for a means of skipping past this error and having the script complete.

如果您正在寻找跳过错误的解决方案,那么您可以随时使用try...catch:

  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); 并继续执行其余代码。