onChange Trigger не работает должным образом

У меня есть таблица Google с функцией автоматического обновления IMPORTXML на основе синхронизированного триггера, и я пытаюсь написать сценарий, который будет автоматически отправлять уведомление по электронной почте, когда он извлекает строку с типом сообщения «HELP».

Я скомпилировал этот сценарий на основе найденных мной примеров. Я протестировал его, и он отлично работает с данными, введенными вручную с помощью устанавливаемого триггера onEdit, но из моего тестирования (и на основе исследований) мне нужно использовать триггер onChange, чтобы IMPORTXML запускал скрипт.

Однако, когда я устанавливаю сценарий на устанавливаемый триггер onChange, похоже, что сценарий не выполняется либо автоматически с данными загрузки IMPORTXML, либо при вводе их вручную на листе.

Я столкнулся с некоторыми ограничениями в Good Apps Script? Я впервые использую его (и JavaScript)

function helpAlertEmail(e) 
{
  if (e.range.columnStart !== 5 || e.value !== 'HELP' && e.value !== 'HELP-CANCEL') return;
  var ss = e.source.getActiveSheet()
  var details = ss.getRange(e.range.rowStart, 1, 1,11).getValues()[0];
  var headers = ss.getRange(1, 1, 1, 11).getValues()[0];
  var subject = "SPOT BEACON ALERT:  " + details[2] + " Sent a " + details[4] + " Message at " + details[9];
  var body = "SPOT Beacon " + details[2] + " (" + details[1] + ")  Sent a " + details[4] + " Message at " + details[9] +  "\n\n";
  var email = "[email protected]";
  var cols = [0, 4, 5, 6, 9, 10];

  for (var i = 0; i < details.length; i++) 
  {
    if (cols.indexOf(i) === -1) continue;
    body += headers[i] + ": " + details[i] + "\n"
  }

  body += "\n\n\n Please do not respond to this email as it is automatically generated by an account that is not checked.";
  MailApp.sendEmail(email, subject, body, {noReply:true});
}

person Tai    schedule 11.01.2017    source источник


Ответы (1)


Насколько я понимаю из вашего объяснения варианта использования, я хотел бы, чтобы вы знали следующее:

1) onEdit - указывает триггер, который срабатывает при редактировании электронной таблицы.

2) onChange - указывает триггер, который срабатывает при изменении содержимого или структуры электронной таблицы.

Это условия, заявленные Google.

Теперь о чем он нам не сообщает:

1) Редактирование должно выполняться вручную

Вы сказали, что тоже пробовали вручную, но спусковой крючок не сработал. Возможная причина этого в том, что вы могли скопировать данные откуда-то, а затем вставить их в нужное место. Таким образом, вы не можете ожидать срабатывания триггера в этом случае.

2) Редактирование не может быть какой-либо формой автоматизации (не может быть выполнено с использованием формулы электронной таблицы или любого скрипта). В этом случае спусковой крючок тоже не сработает.

Таким образом, в целом то, с чем вы столкнулись, не является следствием каких-либо ограничений, установленных Google. К сожалению, это то, что есть.

Что вам нужно сделать, так это подумать о другом способе достижения того, чего вы пытаетесь достичь, а именно, использовать что-то еще, кроме триггеров onChange и onEdit.

person Suyash Gandhi    schedule 11.01.2017