Скрипт для гугл листов (функция авто почты) - PullRequest
0 голосов
/ 08 июня 2018

Скрипт Google Sheets

Мне нужно сгенерировать автоматический ответ по электронной почте, когда столбец «A» помечен как «Завершено».Адрес электронной почты для отправки этого сообщения находится в столбце «I», а тема электронного письма должна содержать данные в столбце «H», а тело сообщения будет общим для всех отправленных сообщений.Это все специфично для каждой строки.

У меня запущено несколько сценариев, для скрытия строк и т. Д., Но ничего сложного.

Все данные отправляются в электронную таблицу из Google Forms и потребуютсяохватить все строки

Любая помощь будет высоко ценится.

1 Ответ

0 голосов
/ 20 июня 2018

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

То, как я его использовал, в основном просто как триггер сценария, поэтому у меня его не былозамените столбец «прогресс», который у вас есть, но добавьте столбец, чтобы они могли проверить, когда они закончат редактирование строки.

Примечание. Этот сценарий целенаправленно устанавливает флажок обратно по умолчанию после нажатия кнопки «Да, я хочу отправить электронное письмо» в предупреждении, в противном случае сценарий будет выполняться непрерывно.

Не увидев ваш Google Sheet или текущий код / ​​этот код, я не смог бы вам помочь вообще.Позвольте мне знать, если это помогает.

/*

 A function to:
 
* After clicking a checkbox, auto prompt a yes/no box
* Upon "yes", copies that row from the source sheet to a destination sheet
* send an e-mail based on that new row's data
 
 I reccomend protecting the response sheet and hiding it, as well as protecting the check box column to give edit access to only those you want to be able to send e-mails.
 
 NOTES:
 
 *It is important that the headers on your source sheet match your destination sheet.

* You have to run the script from the editor first to accept permissions for the emailapp and driveapp

* you need to set up a project trigger (edit/current project triggers) for the source sheet, on spreadsheet, on edit.

*The email will come from the owner of the google sheet and owner of the script project. (the person who reviews and accepts permissions)
 MAKE SURE you are the owner of the sheet, that you are putting the code into the editor, and that you're okay with the e-mail coming from and replying to your email address.


*/


function EmailNotification(e) {

var ui = SpreadsheetApp.getUi();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Assets'); //source sheet
var columnb = sheet.getRange('B:B'); //Column with check boxes
var columnbvalue = columnb.getValues();
var notifysheet = ss.getSheetByName('Responses'); //destination sheet
var data = [];
var rownum =[];

//Condition check in B:B (or check box column); If true copy the same row to data array

for (i=0; i<columnbvalue.length;i++) {

if (columnbvalue[i] == 'true') {

var columnb2 = sheet.getRange('B2:B');
columnb2.setValue('false');

// What you want to say in the pop up alert

var response = ui.alert('Hold Up!\n Are you sure you want to send an email to finance for this asset change?', ui.ButtonSet.YES_NO);
if (response == ui.Button.YES) {

data.push.apply(data,sheet.getRange(i+1,1,1,20).getValues());

//Copy matched ROW numbers to rownum

rownum.push(i);

//Copy data array to destination sheet


notifysheet.getRange(notifysheet.getLastRow()+1,1,data.length,data[0].length).setValues(data);

var activeRow = notifysheet.getLastRow();
var assetname = notifysheet.getRange(activeRow, 1).getDisplayValue(); // The number is the column number in the destination "responses" sheet that you want to include in the email
var owner = notifysheet.getRange(activeRow, 3).getDisplayValue();
var serial = notifysheet.getRange(activeRow, 9).getDisplayValue();
var podate = notifysheet.getRange(activeRow, 6).getDisplayValue();

var email = 'theiremail@gmail.com' //The email address in which you want to send the email notification to
var subject = 'Asset has changed department ownership!'

//Body of the email message, using HTML and the variables from above

var message =
'<br><br><div style="margin-left:40px;">Heads Up!</div>'
+'<br><br><div style="margin-left:40px;">An asset has changed department ownership.</div>'
+'<br><br><div style="margin-left:40px;"><h3 style="text-decoration: underline;">Asset Name:'+ assetname +'</h3></div>'
+'<div style="margin-left:40px;">New Departmet Owner: '+ owner +'</div><br>'
+'<div style="margin-left:40px;">Serial: '+ serial +'</div>'
+'<div style="margin-left:40px;">Purchase Date: '+ podate +'</div>'
+ '<br><br><div style="margin-left:40px;">ヽ(⌐■_■)ノ♪♬</div>';

MailApp.sendEmail(
email,
subject,
"",
{
htmlBody: message,
name: 'Sadie Stevens', //The name you want to email coming from. This will be in bold, while your e-mail address will be small in italics
});

}
}
}
}
...