Google Sheets автоматически отправляет пользовательские диапазоны на электронные письма - PullRequest
0 голосов
/ 07 июня 2019

Я пытаюсь отправлять электронные письма с определенным вложением PDF на различные электронные письма из листов Google с помощью редактора сценариев.

Я знаю, что на этом сайте я могу посетить темы, которые могут мне помочь, но яне слишком хорошо разбирается в Google Sheets Script Editor.Я изучал VBA и SQL, но только до некоторой степени продвинутых, и даже это было около 5 лет назад.Это моя текущая ситуация:

Я пытаюсь настроить систему, в которой моим клиентам отправляется автоматическое электронное письмо от Google, в котором отображается их конкретная информация и короткое сообщение.Я думаю, что понимаю аспект сообщения об этом, но Я не знаю, как выбрать информацию. Ссылка ниже приведет вас к типу контента, который я пытаюсь отправить:

https://drive.google.com/open?id=16VGcID3a5cT9SXFP4IrrwFbamq_01Na0t6jONCrHm0E

В ссылку я включил пример того, с чем я работаю.Я старался изо всех сил копировать фактический файл в максимально возможной степени (не включая конфиденциальную информацию), но расположение листа и имя все те же, что и мой файл.Я понимаю, нужна ли дополнительная информация, и я буду стараться изо всех сил.

Наконец, я хотел отправить таблицу в виде приложения в формате PDF и включить короткий предмет и текст.

К сожалению, у меня нет отправной точки.

Я попробовал несколько вещей, но я действительно стреляю в темноте.Я смотрел онлайн на учебники и следовал за ними, но они не включали в себя все, что мне было нужно, и те, которые были, были ПУТЬ сложными.

1 Ответ

0 голосов
/ 18 июня 2019

function emailWashburn() {

  SpreadsheetApp.getActive().getSheetByName(".02 Dup").activate();

  var emailRange = SpreadsheetApp.getActiveSheet().getRange("C6");
  var emailAddress = emailRange.getValues();
  
  var nameRange = SpreadsheetApp.getActiveSheet().getRange("C3");
  var currentName = nameRange.getValues();
  
  var dateRange = SpreadsheetApp.getActiveSheet().getRange("C7");
  var currentDate = dateRange.getValues();
  
  var templateText = SpreadsheetApp.getActive().getRangeByName("DUP_Body").getValue();
  
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.insertSheet(6);
  spreadsheet.getActiveSheet().setName('temp');
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('.02 Dup'), true);
  spreadsheet.getRange('A1:E12').activate();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('temp'), true);
  spreadsheet.getRange('\'.02 Dup\'!A1:E12').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('\'.02 Dup\'!A1:E12').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_FORMAT, false);
  spreadsheet.getRange('\'.02 Dup\'!A1:E12').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_COLUMN_WIDTHS, false);
  
  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("temp").getRange(1, 1, 12, 12);
  var destination = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1Yk6l1etGAwWE7hQ48u17GoxezRjIEv07WLZ_O3Chmrc/edit#gid=0").getSheetByName("Temp");
  
  ss.copyTo(destination);
  
  var emailAttachment = DriveApp.getFileById(destination.getId()).getAs("application/pdf");
  emailAttachment.setName("Washburn" + ".pdf");
  
  var messageBody = templateText.replace("{name}", currentName).replace("{date}", currentDate);
  var subjectLine = "Attn: Updated fuel prices effective as of " + currentDate;
  
  MailApp.sendEmail(emailAddress, subjectLine, messageBody, {
  htmlBody: messageBody,
  attachments: [emailAttachment]
  });
 
  var spreadsheets = SpreadsheetApp.getActive();
  spreadsheets.setActiveSheet(spreadsheet.getSheetByName('temp'), true);
  spreadsheets.deleteActiveSheet();
}

Моя основная проблема - в строке 29, и это потому, что формула предназначена для копирования и вставки всего листа в новый лист в электронную таблицу - но я попытался противостоять этому, указав и диапазон копирования, и диапазон вставки.

Кроме того, я точно знаю, что это не самый простой способ сделать это (отправка определенного диапазона получателю электронной почты в формате PDF), но после изучения нескольких учебных пособий - это, казалось, хороший способ при этом.

Если это нехороший способ, и я просто вращаю свои колеса - пожалуйста, дайте мне знать, чтобы я мог попробовать другой угол.

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