google-apps-script
Arkusze Google MailApp
Szukaj…
Wprowadzenie
Ta usługa umożliwia użytkownikom wysyłanie wiadomości e-mail z pełną kontrolą nad treścią wiadomości e-mail. W przeciwieństwie do GmailApp, jedynym celem MailApp jest wysyłanie wiadomości e-mail. MailApp nie może uzyskać dostępu do skrzynki odbiorczej Gmaila użytkownika.
Zmiany w skryptach napisanych przy użyciu GmailApp częściej wyzwalają żądanie ponownej autoryzacji od użytkownika niż skrypty MailApp.
Podstawowy przykład MailApp
MailApp to interfejs API Google App Script, którego można używać do wysyłania poczty
function sendEmails() {
var subject = "A subject for your new app!";
var message = "And this is the very first message"
var recipientEmail = "[email protected]";
MailApp.sendEmail(recipientEmail, subject, message);
}
Klasa MailApp jest ograniczona do kwot opartych na Twoim koncie Google:
- Użytkownik będący konsumentem (tj. Osobiste konto Gmail): 100 odbiorców dziennie
- Klient Google Apps (starszy): 100 odbiorców dziennie
- GSuite (podstawowy / Gov / Edu / Business): 1500 odbiorców / dzień
Możesz sprawdzić limit e-mail w MailApp
function checkQuota() {
Logger.log(MailApp.getRemainingDailyQuota());
}
Dostęp do danych z arkusza
function getSheetData() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = 100; // Number of rows to process
var startCol = 1; //First column of data to process
var numCols = 15; // Number of columns to process
var dataRange = sheet.getRange(startRow, startCol, numRows, numCols);
// Fetch values for each row in the Range.
var data = dataRange.getValues();
return data;
}
Możesz również zmodyfikować powyższą funkcję w następujący sposób, aby uzyskać dynamiczny zakres danych z treści zawartej w arkuszu:
function getDataSheet() {
sheet = SpreadsheetApp.getActiveSheet();
//Get data range based on content
var dataRange = sheet.getDataRange();
// Fetch values for each row in the Range.
var data = dataRange.getValues();
return data;
}
Użyj danych arkusza, aby wysłać wiadomość e-mail
Biorąc pod uwagę - mieć arkusz pracowników, którzy złożyli wniosek o zwrot kosztów.
Wymagania - powinniśmy wysłać pracownikowi wiadomość e-mail, gdy nastąpi przetworzenie jego zwrotu
Tak więc arkusz wygląda następująco:
Funkcja wysyłania wiadomości e-mail jest następująca:
function getDataSheet() {
sheet = SpreadsheetApp.getActiveSheet();
startRow = 2; // First row of data to process
numRows = 100; // Number of rows to process
startCol = 1; //First column of data to process
numCols = 15; // Number of columns to process
var dataRange = sheet.getRange(startRow, startCol, numRows, numCols);
// Fetch values for each row in the Range.
var data = dataRange.getValues();
return data;
}
function getMessage(name, amount) {
return "Hello " + name + ", Your reimbursement for amount " + amount + " is processed successfully";
}
function sendEmail() {
var emailSent = "Yes";
var reimbursed = "Yes";
var emailCol = 5;
var data = getDataSheet();
for (var i = 0; i < data.length; i++) {
var row = data[i];
var isReimbursed = row[3];
var isEmailSent = row[4];
var name = row[0];
var amount = row[2];
if(isReimbursed == reimbursed && isEmailSent != emailSent) {
var subject = "Reimbursement details";
var message = getMessage(name, amount);
var recipientEmail = row[1];
MailApp.sendEmail(recipientEmail, subject, message);
//Sheet range starts from index 1 and data range starts from index 0
sheet.getRange(1 + i, emailCol).setValue(emailSent);
}
}
}
Wysyłanie treści HTML pocztą
W powyższym przykładzie, jeśli chcemy wysłać treść HTML jako wiadomość w wiadomości e-mail, utwórz plik HTML, przechodząc do opcji Plik -> Nowy -> Plik HTML
Teraz możesz zobaczyć plik HTML oprócz pliku gs w następujący sposób:
Teraz zaktualizuj metodę getMessage () z powyższego przykładu w następujący sposób:
function getMessage(name, amount) {
var htmlOutput = HtmlService.createHtmlOutputFromFile('Message'); // Message is the name of the HTML file
var message = htmlOutput.getContent()
message = message.replace("%name", name);
message = message.replace("%amount", amount);
return message;
}
Należy również zmienić wywołanie interfejsu API MailApp
MailApp.sendEmail(recipientEmail, subject, message, {htmlBody : message});
Cały kod będzie więc wyglądał następująco:
function getDataSheet() {
sheet = SpreadsheetApp.getActiveSheet();
startRow = 2; // First row of data to process
numRows = 100; // Number of rows to process
startCol = 1; //First column of data to process
numCols = 15; // Number of columns to process
var dataRange = sheet.getRange(startRow, startCol, numRows, numCols);
// Fetch values for each row in the Range.
var data = dataRange.getValues();
return data;
}
function getMessage(name, amount) {
var htmlOutput = HtmlService.createHtmlOutputFromFile('Message');
var message = htmlOutput.getContent()
message = message.replace("%name", name);
message = message.replace("%amount", amount);
return message;
}
function sendEmail() {
var emailSent = "Yes";
var reimbursed = "Yes";
var emailCol = 5;
var data = getDataSheet();
for (var i = 0; i < data.length; i++) {
var row = data[i];
var isReimbursed = row[3];
var isEmailSent = row[4];
var name = row[0];
var amount = row[2];
if(isReimbursed == reimbursed && isEmailSent != emailSent) {
var subject = "Reimbursement details";
var message = getMessage(name, amount);
var recipientEmail = row[1];
MailApp.sendEmail(recipientEmail, subject, message, {htmlBody : message});
sheet.getRange(startRow + i, emailCol).setValue(emailSent);
}
}
}