Скрипт Google Spreadsheet с использованием SpreadsheetApp.getActiveSheet (), переходящий на работу с другим листом - PullRequest
1 голос
/ 02 ноября 2019

Я использую сценарий с таблицей Google для отправки электронного письма. Мой файл имеет 3 листа, этот, который отправляет электронную почту, называется «EMAIL». Код для отправки такой:

function sendEmails() {
    var sheet = SpreadsheetApp.getActiveSheet();
    var emailAddress = 'destination@domain.com'; 
    var subject = 'Subject BlaBlaBla';  
    var dados = sheet.getRange ("B2:M10").getValues(); //range with mail content
    var message2 = getTable(dados); //format the range in html table

    //Envia o email em formato HTML
    MailApp.sendEmail({
      to: emailAddress,
      subject: subject,
      htmlBody: message2
    });
}

У меня есть кнопка на листе «EMAIL», которая запускает sendEmails (). Это работает нормально.

Моя проблема:

Я хочу поместить кнопку на другом листе, называемом «2019», который также должен начать отправку электронной почты, без активного листа «EMAIL». Что я должен изменить в этом коде, чтобы эта функция работала sendEmails () без активной таблицы «EMAIL»?

var sheet = SpreadsheetApp.getActiveSheet ();

Мне нужно что-то изменитькоторая поддерживает эту функцию

1 Ответ

2 голосов
/ 02 ноября 2019
  • Вы хотите запустить функцию sendEmails(), указав имя листа.

Если мое понимание верно, как насчет этой модификации? Пожалуйста, подумайте об этом как об одном из нескольких ответов.

Шаблон 1:

В этом шаблоне скрипт запускается для имени листа 2019.

Измененоscript:

From:
var sheet = SpreadsheetApp.getActiveSheet();
To:
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("2019");

Pattern 2:

В этом шаблоне, когда активным листом являются EMAIL и 2019, сценарий запускается.

Модифицированный скрипт:

function sendEmails() {
  var sheetNames = ["EMAIL", "2019"];

  var sheet = SpreadsheetApp.getActiveSheet();
  if (sheetNames.indexOf(sheet.getSheetName()) > 0) {
    var emailAddress = 'destination@domain.com'; 
    var subject = 'Subject BlaBlaBla';  
    var dados = sheet.getRange ("B2:M10").getValues(); //range with mail content
    var message2 = getTable(dados); //format the range in html table

    //Envia o email em formato HTML
    MailApp.sendEmail({
      to: emailAddress,
      subject: subject,
      htmlBody: message2
    });
  }
}

Ссылки:

Если я неправильно понял ваш вопрос, и это был не тот результат, которого вы хотите, прошу прощения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...