В нашем колледже мы одалживаем Chromebook на время обучения здесь, мы довольно слабо связываемся со студентами, чтобы попросить их вернуться, поэтому после их отъезда мы, как правило, играем в догонялки и должны связаться с ними, чтобы вернуть их обратно. .
Продолжительность пребывания студентов варьируется от 1 до 3 лет. Я хочу создать журнал, где мы можем отслеживать этих студентов и какие устройства они берут на себя. Затем, за месяц до их отъезда, автоматически отправьте электронное письмо, в котором говорится, что им необходимо вернуть нам Chromebook.
В моем листе есть «Ожидаемая дата возвращения», в которую мы вводим только год, в котором они находятся. из-за отпуска, поскольку фактические данные об отпуске у каждого учащегося различаются в зависимости от их предметов. Идея состояла бы в том, что я бы установил триггер для запуска за день до того, как любой студент покинет колледж.
Я очень новичок в написании сценариев, но до сих пор я создал сценарий (с использованием большого количества Google поиск, копирование того, что я нашел в Интернете, и поиск), где он будет просматривать лист, найти любые строки данных без слов «EMAIL_SENT» в них и отправить электронное письмо. Если он показывает «EMAIL_SENT», он пропускает их. Когда я говорю, что я новичок, мне потребовалась неделя, чтобы добраться до этой точки.
Я добавлю триггеры, чтобы он запускался только один раз в год, однако я хочу, чтобы он отправлял электронные письма студентам. кто уйдет в этом году, в каком бы порядке они ни находились на листе. Можно ли заставить его позвонить в текущий год, найти ожидаемую дату возвращения и отправить только в том же году?
Мой сценарий ниже.
Надеюсь, это имеет смысл.
// This constant is written in column I for rows for which an email
// has been sent successfully.
var EMAIL_SENT = 'EMAIL_SENT';
/**
* Sends non-duplicate emails with data from the current spreadsheet.
*/
function sendEmails2(){
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // first row of data to process
var numRows = 1000; // number of rows to process
// Fetch the range of cells A2:B4
var dataRange = sheet.getRange(startRow, 1, sheet.getLastRow()-1,9);
// Fetch values for each row in the Range.
var data = dataRange.getValues ();
for (var i = 0; i < data.length; ++i) {
var row = data[i];
var emailAddress = row[3]; // fourth column
var recipient = row[0]; // first column
var asset = row[6]; // seventh column
var loanDate = row [7] + ""; // seventh column
var returnDate = row[8]; // ninth column
var message = 'Hi ' + recipient + '. \n\n' + 'On ' + loanDate + ' you borrowed Chromebook ' + asset + ' from Learning Support. \n\n' + 'Since you are soon to leave the college, we require this Chromebook to be returned to the IT Office before the 30/06/' + returnDate + '. \n\n' + 'Kind regards,\n\n' + 'IT Services';
var emailSent = row[2]; // third column
if (emailSent !=EMAIL_SENT) { //prevents sending duplicates
var subject = 'Chromebook Loan';
MailApp.sendEmail(emailAddress, subject, message);
sheet.getRange(startRow + i, 3).setValue(EMAIL_SENT);
sheet.getRange(startRow + i, 10).setValue(EMAIL_SENT);
// Make sure the cell is updated right away in case the script is interrupted
SpreadsheetApp.flush();
}
}
}