2017-01-11 2 views
0

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

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

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

Могу ли я использовать некоторые ограничения для хорошего сценария приложений? Это мой первый раз, используя его (и 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}); 
} 

ответ

1

, что я понял из вашего объяснения о прецеденте, я хотел бы, чтобы вы знали это:

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

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

Условия, указанные Google.

Теперь то, что он не говорит нам о том:

1) Редактирование должен быть ручной

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

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

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

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

Смежные вопросы