В настоящее время я работаю над сценарием для автоматической отправки электронного письма при обновлении ячейки на основе определенного значения ячеек.Теперь я хочу взять те же самые значения, которые я получил по электронной почте, и заполнить их в новой электронной таблице и опубликовать отметку времени, когда эта строка была обновлена.В новом SS это будут A (отметка времени), B, C, D, E (BE - это данные, которые автоматически отправляются по электронной почте).
С помощью другого пользователя я смог получитьавтоматизированная система электронной почты работает.Я нашел несколько постов, задающих похожие вопросы, которые я пытался соединить вместе, чтобы посмотреть, смогу ли я заставить это работать, но у меня не было успеха.Я продолжал работать с блоками в коде, потому что я не знаю весь правильный синтаксис для google-apps-scripts.Я попытался copyTo (), duplicateSheet ().Но проблема в том, что я забочусь только об обновлении одной строки за раз, когда конкретная ячейка обновляется в строке.И все, что я нашел, это сообщения о копировании целых листов данных в новую электронную таблицу.Я подумал, что мне нужно будет определить его выше, а затем добавить copyTo () в оператор if, но каждый раз, когда я пробовал его, оператор if ломался и получал сообщение об ошибке в коде.
(у меня также естьтриггер onEdit в проекте запускает)
function sendNotification(e){
var ss = e.source.getSheetByName('Datasheet'); //defines the source of
where to look
var cell = e.range.getA1Notation();
var row = e.range.getRow(); //from the range gets the row(is important
for calling the control owner and control ID on line 15 and 16)
var col = e.range.getColumn(); //from the range gets the
column(important when pulling specific columns of information)
var cellvalue = e.range.getValue(); //this pulls whatever is inside of
the cell. (so 'NAME' in column i)
var subject = 'SUBJECT: '+ ss.getSheetName(); //tells the program what
to put in the subject line of the email (ss.getSheetName() gets the name
of the tab of the data)
var name = ss.getRange(row, 9).getValue(); //get column 9 for current
row (column 9 is column i which is the control certifier)
if (name === 'NAME' && (col === 23 || col === 24 || col === 31 || col
=== 32) === true) { //states: if the cell in column i = TRUE, AND column
(w)23, (x)24, (ae)31 OR (af)32 = changed/updated THEN execute command
below
var control = ss.getRange(row, 2).getValue(); //get value for column B
in updated cell row
var owner = ss.getRange(row, 8).getValue(); //get value for column H
in updated cell row
//line 21-35 is the email formatting
//MailApp.sendEmail() sends the email if line 14 = TRUE
// to: who the email is sent too
//Subject = subject defined above
//htmlBody = what is in the body of the paragraph sent
MailApp.sendEmail({
to: "EMAIL",
subject: subject,
htmlBody: "The following cell has been updated: <br><br>"+
"<br><br>" + "The control is: " + control +
", <br><br>The owner is: " + owner +
"<br><br>The change was: " + cellvalue + "<br>" +
"<br><br>Thank you. <br><br><br><br>" +
})
}
}
В принципе, мне бы понравилось, если бы обновлялись столбцы W, X, AE или AF.помимо того, что он делает в настоящее время, отправляя мне по электронной почте информацию.Чтобы также обновить всю эту информацию в новой строке в совершенно другой электронной таблице с отметкой времени, когда она была отредактирована, чтобы я мог ее зарегистрировать.