google-apps-script
Google-bladen MailApp
Zoeken…
Invoering
Met deze service kunnen gebruikers e-mails verzenden met volledige controle over de inhoud van de e-mail. In tegenstelling tot GmailApp is het enige doel van MailApp het verzenden van e-mail. MailApp heeft geen toegang tot de Gmail-inbox van een gebruiker.
Wijzigingen in scripts die zijn geschreven met GmailApp leiden eerder tot een autorisatieverzoek van een gebruiker dan MailApp-scripts.
Een standaard MailApp-voorbeeld
MailApp is de API van Google App Script die kan worden gebruikt om e-mail te verzenden
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);
}
De MailApp-klasse is beperkt tot quota op basis van uw Google-account:
- Consumentengebruiker (dwz persoonlijk Gmail-account): 100 ontvangers / dag
- Klant van Google Apps (oud): 100 ontvangers per dag
- GSuite (basic / Gov / Edu / Business): 1500 ontvangers / dag
U kunt uw e- MailApp
controleren in MailApp
function checkQuota() {
Logger.log(MailApp.getRemainingDailyQuota());
}
Toegang tot gegevens van blad
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;
}
U kunt de bovenstaande functie ook als volgt wijzigen om het gegevensbereik dynamisch te krijgen van de inhoud op het blad:
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;
}
Gebruik bladgegevens om e-mail te verzenden
Gegeven - Een blad met werknemers die om terugbetaling hebben verzocht.
Vereiste - We moeten een e-mail sturen naar de werknemer wanneer hun vergoeding wordt verwerkt
Het blad is dus als volgt:
De functie voor het verzenden van een e-mail is als volgt:
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);
}
}
}
HTML-inhoud per e-mail verzenden
Als we in het bovenstaande voorbeeld HTML-inhoud als bericht in de e-mail willen verzenden, maak dan een HTML-bestand door naar Bestand -> Nieuw -> HTML-bestand te gaan
Nu kunt u naast uw gs-bestand als volgt een HTML-bestand zien:
Werk nu de methode getMessage () uit het bovenstaande voorbeeld als volgt bij:
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;
}
De oproep naar MailApp- API moet ook worden gewijzigd
MailApp.sendEmail(recipientEmail, subject, message, {htmlBody : message});
Dus de hele code is als volgt:
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);
}
}
}