Отправьте письмо на листе Google, если время рассчитывается с помощью функции NOW () - PullRequest
0 голосов
/ 02 апреля 2019

Я не знаю, является ли это глупостью или хитростью, но, попробовав пару скриптов и попытавшись изменить их, я не могу заставить это работать.

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

Другими словами, когда наступает срок выполнения, значение ячейки (через формулу) преобразуется из «ОК» в «ТРЕВОГА», я хочу, чтобы электронное письмо запускалось автоматически, когда значение вычисляемой ячейки равно « ALERT "

https://docs.google.com/spreadsheets/d/14e9M3fo2p0E4k0raOe6xAuVP5OVfcIYycxHIPimIud0/edit?usp=sharing

Я пытался принудительно пересчитать формулу для имитации ввода пользователя через set.value, но безуспешно

function checkValue(e){

var sp = PropertiesService.getScriptProperties();
var ss = SpreadsheetApp.getActive();
var sheet = ss.getActiveSheet();
var valueToCheck = sheet.getRange("S2").getValue();
var oldValue = sp.getProperty("S2") || 0;
if (valueToCheck == "ALERTE" && valueToCheck != oldValue) {

var sheetname = ss.getActiveSheet().getName();
var user = sheet.getRange("F7").getValue();
var Toemail = 'email@domain.com';
var subject = '❗ ' + 'RAPPEL' + ' ❗' + ' Nouvelle DA à valider ! ' + sheetname ;
var body = 'Vous avez une nouvelle DA à valider ' + sheetname + ' de la part de ' + user + ' à compléter ici ' + SpreadsheetApp.getActiveSpreadsheet().getUrl() + '#gid=' + SpreadsheetApp.getActiveSpreadsheet().getSheetId();

GmailApp.sendEmail(Toemail, subject, body, {'from':'notification@DOMAIN.com'});

  sp.setProperty("S2", valueToCheck);

}

}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...