Этот текущий код будет отправлять уведомление через Slack всякий раз, когда кто-то вносит какие-либо изменения в столбец 5, но, к сожалению, он не будет работать, когда изменения вносятся путем копирования и вставки. Он работает только при ручном вводе значения в столбце 5 в электронной таблице. .
function sendSlackMessage(e) {
if (e.range.getColumn() == 5) {
var source = e.source;
var row = e.range.getRow();
var firstname = source.getActiveSheet().getRange(row, 1, 1, 1).getValue();
var lastname = source.getActiveSheet().getRange(row, 2, 1, 1).getValue();
var suspended = e.value;
var url = "https://hooks.slack.com/services/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";
var payload = {
text: firstname + " " + lastname + " Google account is suspended " + " = " + suspended
}
var headers = {
'Content-type': 'application/json'
}
var options = {
headers: headers,
method: 'POST',
payload: JSON.stringify(payload)
}
UrlFetchApp.fetch(url, options);
} else {
return;
}
}
Подскажите, пожалуйста, стоит ли мне пересмотреть эту строку:
var suspended = e.value;
Стать таким?
var suspended = e.source.getActiveSheet().getRange("E:E").getValue();
Подскажите пожалуйста, какое значение поставить в getRange?
Спасибо,





По вашему вопросу я догадался, что вы установили функцию sendSlackMessage в качестве устанавливаемого триггера OnEdit. В этом случае, когда значение ячейки помещается путем копирования и вставки, объект события не имеет свойства value. Это причина вашей текущей проблемы. Я думаю, что ваша догадка о Please advise, should I revise this line: var suspended = e.value; верна.
В этом случае как насчет следующей модификации?
var suspended = e.value;
var suspended = e.range.getDisplayValue();
или
var suspended = e.range.getValue();
firstname, lastname, suspended можно получить одним запросом. Когда это будет отражено в вашем сценарии, как насчет следующей модификации? В этой модификации при редактировании столбца «Е» в качестве значений firstname, lastname, suspended используются значения столбцов «А», «Б» и «Е» редактируемой строки.function sendSlackMessage(e) {
// --- I modified the below script.
const { range } = e;
if (range.columnStart == 5) {
var [firstname, lastname, , , suspended] = range.offset(0, -4, 1, 5).getValues()[0];
// ---
var url = "https://hooks.slack.com/services/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";
var payload = {
text: firstname + " " + lastname + " Google account is suspended " + " = " + suspended
}
var headers = {
'Content-type': 'application/json'
}
var options = {
headers: headers,
method: 'POST',
payload: JSON.stringify(payload)
}
UrlFetchApp.fetch(url, options);
} else {
return;
}
}
Привет, Танаике, я очень рад это сделать! Я уже принял ответ и, к сожалению, не могу проголосовать за ваш ответ (Спасибо за отзыв! Чтобы проголосовать, вам нужно иметь как минимум 15 репутации, но ваш отзыв записан.)
Привет, Танаике, это работает; Спасибо, что поделились. Slack отправляет уведомление, когда кто-то вносит какие-либо изменения в GSheet. Но я предполагаю, что это решение не будет работать при запуске GAS с SDK администратора: таблица обновляется, но уведомление Slack не работает.