Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 47 additions & 26 deletions advanced/gmail.gs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/**
* Copyright Google LLC
* Copyright 2021 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand All @@ -13,30 +13,37 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// [START apps_script_gmail_label]
// [START gmail_label]
/**
* Lists the user's labels, including name, type,
* ID and visibility information.
*/
function listLabelInfo() {
var response =

function listLabelInfo(){
try{
const response =
Gmail.Users.Labels.list('me');
for (var i = 0; i < response.labels.length; i++) {
var label = response.labels[i];
for (let i = 0; i < response.labels.length; i++) {
const label = response.labels[i];
Logger.log(JSON.stringify(label));
}
}
catch(err){
Logger.log(err)
}
}
// [END apps_script_gmail_label]
// [END gmail_label]

// [START apps_script_gmail_inbox_snippets]
// [START gmail_inbox_snippets]
/**
* Lists, for each thread in the user's Inbox, a
* snippet associated with that thread.
*/
function listInboxSnippets() {
var pageToken;
try{
let pageToken;
do {
var threadList = Gmail.Users.Threads.list('me', {
const threadList = Gmail.Users.Threads.list('me', {
q: 'label:inbox',
pageToken: pageToken
});
Expand All @@ -47,39 +54,44 @@ function listInboxSnippets() {
}
pageToken = threadList.nextPageToken;
} while (pageToken);
}
catch(err){
Logger.log(err)
}
}
// [END apps_script_gmail_inbox_snippets]
// [END gmail_inbox_snippets]


// [START apps_script_gmail_history]
// [START gmail_history]
/**
* Gets a history record ID associated with the most
* recently sent message, then logs all the message IDs
* that have changed since that message was sent.
*/
function logRecentHistory() {
function logRecentHistory () {
// Get the history ID associated with the most recent
// sent message.
var sent = Gmail.Users.Threads.list('me', {
const sent = Gmail.Users.Threads.list('me', {
q: 'label:sent',
maxResults: 1
});
if (!sent.threads || !sent.threads[0]) {
Logger.log('No sent threads found.');
return;
}
var historyId = sent.threads[0].historyId;
const historyId = sent.threads[0].historyId;

// Log the ID of each message changed since the most
// recent message was sent.
var pageToken;
var changed = [];
try{
let pageToken;
let changed = [];
do {
var recordList = Gmail.Users.History.list('me', {
const recordList = Gmail.Users.History.list('me', {
startHistoryId: historyId,
pageToken: pageToken
});
var history = recordList.history;
const history = recordList.history;
if (history && history.length > 0) {
history.forEach(function(record) {
record.messages.forEach(function(message) {
Expand All @@ -91,23 +103,32 @@ function logRecentHistory() {
}
pageToken = recordList.nextPageToken;
} while (pageToken);


changed.forEach(function(id) {
Logger.log('Message Changed: %s', id);
});
}
catch(err){
Logger.log(err)
}
}
// [END apps_script_gmail_history]

// [START apps_script_gmail_raw]
// [END gmail_history]
// [START gmail_raw]
function getRawMessage() {
var messageId = Gmail.Users.Messages.list('me').messages[0].id;
try{
const messageId = Gmail.Users.Messages.list('me').messages[0].id;
console.log(messageId);
var message = Gmail.Users.Messages.get('me', messageId, {
const message = Gmail.Users.Messages.get('me', messageId, {
'format': 'raw'
});

// Get raw content as base64url encoded string.
var encodedMessage = Utilities.base64Encode(message.raw);
const encodedMessage = Utilities.base64Encode(message.raw);
console.log(encodedMessage);
}
catch(err){
Logger.log(err)
}
}
// [END apps_script_gmail_raw]
// [END gmail_raw]
13 changes: 9 additions & 4 deletions gmail/markup/Code.gs
Original file line number Diff line number Diff line change
@@ -1,14 +1,19 @@
// [START apps_script_gmail_markup]
// [START gmail_markup]
/**
* Tests the schema.
* Send an email with schemas in order to test email markup.
*/
function testSchemas() {
var htmlBody = HtmlService.createHtmlOutputFromFile('mail_template').getContent();
try{
const htmlBody = HtmlService.createHtmlOutputFromFile('mail_template').getContent();

MailApp.sendEmail({
to: Session.getActiveUser().getEmail(),
subject: 'Test Email markup - ' + new Date(),
htmlBody: htmlBody,
});
}
catch(err){
Logger.log(err)
}
}
// [END apps_script_gmail_markup]
// [END gmail_markup]
13 changes: 9 additions & 4 deletions gmail/quickstart/quickstart.gs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/**
* Copyright Google LLC
* Copyright 2021 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand All @@ -18,15 +18,20 @@
* Lists the labels in the user's account.
*/
function listLabels() {
var response = Gmail.Users.Labels.list('me');
try{
const response = Gmail.Users.Labels.list('me');
if (response.labels.length == 0) {
Logger.log('No labels found.');
} else {
Logger.log('Labels:');
for (var i = 0; i < response.labels.length; i++) {
var label = response.labels[i];
for (let i = 0; i < response.labels.length; i++) {
const label = response.labels[i];
Logger.log('- %s', label.name);
}
}
}
catch(err){
Logger.log(err)
}
}
// [END gmail_quickstart]
70 changes: 42 additions & 28 deletions gmail/sendingEmails/sendingEmails.gs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/**
* Copyright Google LLC
* Copyright 2021 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand All @@ -14,56 +14,70 @@
* limitations under the License.
*/

// [START apps_script_gmail_send_emails]
// [START gmail_send_emails]
/**
* Sends emails with data from the current spreadsheet.
*/
function sendEmails() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = 2; // Number of rows to process
try{
// Get the active sheet in spreadsheet
const sheet = SpreadsheetApp.getActiveSheet();
let startRow = 2; // First row of data to process
let numRows = 2; // Number of rows to process
// Fetch the range of cells A2:B3
var dataRange = sheet.getRange(startRow, 1, numRows, 2);
const dataRange = sheet.getRange(startRow, 1, numRows, 2);
// Fetch values for each row in the Range.
var data = dataRange.getValues();
for (var i in data) {
var row = data[i];
var emailAddress = row[0]; // First column
var message = row[1]; // Second column
var subject = 'Sending emails from a Spreadsheet';
const data = dataRange.getValues();
for (let i in data) {
const row = data[i];
const emailAddress = row[0]; // First column
const message = row[1]; // Second column
let subject = 'Sending emails from a Spreadsheet';
//Send emails to emailAddresses which are presents in First column
MailApp.sendEmail(emailAddress, subject, message);
}
}
catch(err){
Logger.log(err)
}
}
// [END apps_script_gmail_send_emails]
// [END gmail_send_emails]

// [START apps_script_gmail_send_emails_2]
// [START gmail_send_non_duplicate_emails]
// This constant is written in column C for rows for which an email
// has been sent successfully.
var EMAIL_SENT = 'EMAIL_SENT';
let 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 = 2; // Number of rows to process
function sendNonDuplicateEmails() {
try{
// Get the active sheet in spreadsheet
const sheet = SpreadsheetApp.getActiveSheet();
let startRow = 2; // First row of data to process
let numRows = 2; // Number of rows to process
// Fetch the range of cells A2:B3
var dataRange = sheet.getRange(startRow, 1, numRows, 3);
const dataRange = sheet.getRange(startRow, 1, numRows, 3);
// 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[0]; // First column
var message = row[1]; // Second column
var emailSent = row[2]; // Third column
const data = dataRange.getValues();
for (let i = 0; i < data.length; ++i) {
const row = data[i];
const emailAddress = row[0]; // First column
const message = row[1]; // Second column
const emailSent = row[2]; // Third column
if (emailSent !== EMAIL_SENT) { // Prevents sending duplicates
var subject = 'Sending emails from a Spreadsheet';
let subject = 'Sending emails from a Spreadsheet';
//Send emails to emailAddresses which are presents in First column
MailApp.sendEmail(emailAddress, subject, message);
sheet.getRange(startRow + i, 3).setValue(EMAIL_SENT);
// Make sure the cell is updated right away in case the script is interrupted
SpreadsheetApp.flush();
}
}
}
catch(err){
Logger.log(err)
}
}
// [END apps_script_gmail_send_emails_2]
// [END gmail_send_non_duplicate_emails]