Добавление редактора со сценарием выдает «Недопустимое электронное письмо» и останавливает скрипт

#google-apps-script #google-docs #google-forms #google-workspace

#google-apps-script #google-docs #google-forms #google-workspace

Вопрос:

Я использую скрипт приложений для создания документа, включающего ответы из формы 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();                                             


}
  

Ответ №1:

Ищу способ пропустить эту ошибку и завершить сценарий.

Если вы ищете решение, позволяющее пропустить ошибку, вы всегда можете использовать 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); и продолжит работу с остальной частью кода.

Комментарии:

1. Спасибо, Мариос, я действительно хочу, чтобы остальная часть кода продолжала выполняться, поэтому, если в электронном письме есть ошибка, он продолжает выполнять функцию замены текста

2. @EwanFarry Спасибо за ваш отзыв. Пожалуйста, попробуйте мое обновленное решение.