google-apps-script
Google lämnar MailApp
Sök…
Introduktion
Denna tjänst gör det möjligt för användare att skicka e-postmeddelanden med fullständig kontroll över e-postens innehåll. Till skillnad från GmailApp är MailApps enda syfte att skicka e-post. MailApp har inte åtkomst till en användares Gmail-inkorg.
Ändringar av skript skrivna med GmailApp är mer benägna att utlösa en begäran om godkännande från en användare än MailApp-skript.
Ett grundläggande exempel på MailApp
MailApp är api från Google App Script som kan användas för att skicka e-post
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);
}
MailApp-klassen är begränsad till kvoter baserade på ditt Google-konto:
- Konsumentanvändare (dvs. personligt Gmail-konto): 100 mottagare / dag
- Google Apps (äldre) kund: 100 mottagare / dag
- GSuite (basic / Gov / Edu / Business): 1500 mottagare / dag
Du kan kontrollera din e- MailApp
inom MailApp
function checkQuota() {
Logger.log(MailApp.getRemainingDailyQuota());
}
Få åtkomst till data från arket
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;
}
Du kan också ändra ovanstående funktion på följande sätt för att få dynamisk dataintervall från innehållet i arket:
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;
}
Använd arkinformation för att skicka e-post
Givet - Ett ark med anställda som har begärt ersättning.
Krav - Vi ska skicka ett e-postmeddelande till den anställde när deras ersättning behandlas
Så arket är som följer:
Funktionen för att skicka ut ett e-postmeddelande är följande:
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);
}
}
}
Skicka HTML-innehåll i e-post
I exemplet ovan, om vi vill skicka ut HTML-innehåll som meddelande i e-postmeddelandet, skapar du en HTML-fil genom att gå till File -> New -> HTML-fil
Nu kan du se en HTML-fil förutom din gs-fil på följande sätt:
Uppdatera nu metoden getMessage () från ovanstående exempel på följande sätt:
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;
}
Samtalet till MailApp api måste också ändras
MailApp.sendEmail(recipientEmail, subject, message, {htmlBody : message});
Så hela koden kommer att vara följande:
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);
}
}
}