Таблица Google l oop для отправки электронной почты с PDF не работает - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть таблица счетов-фактур Google, где я использовал формулу vlookup для получения данных из другого (data) листа. Только мне нужно ввести номер строки в листе счета. Поэтому я создал скрипт l oop, в котором автоматический номер строки из таблицы данных будет введен в таблицу счетов и отправит электронное письмо с вложением в формате PDF. При запуске этой строки сценария Номер каждой строки вводится правильно, но адрес электронной почты не будет go.

function SendInvoiceNew4() {
  var sheet = SpreadsheetApp.getActiveSheet();

// Loop from CELL Number Value to CELL Number Value EQUAL
  for(i=sheet.getRange("H11").getValue();i<=sheet.getRange("I11").getValue();i++) // *************** Enter Start Invoice Serial No Cell Reference & Last Serial No Cell is Auto
  sheet.getRange("H11").setValue(i); //Auto Enter Next Loop Serail Number

  var InvDate = Utilities.formatDate(new sheet.getRange("H13").getValue(), "GMT+1", "MMM-yyyy") //Set invoice Date Format = MONTH & YEAR
  var emailTo = sheet.getRange("B12").getValue(); //Get Email Address from Data
  var message = 'Dear' + "\n\n" + 'See attached your attached invoice in PDF format.' + "\n\n" + 'Thanking you' + "\n" + 'www.xyz.in' + "\n" + '[DO NOT REPLY to this Email.]'; //Enter Custom Messagen ************************************************** Message Body
  var subject = 'Invoice for Month ' + InvDate;  // ************* Enter Cell Reference for Date of Invoice for Subject

// Convert Invoice Sheet to PDF
  var originalSpreadsheet = SpreadsheetApp.getActive(); // Set original invoice sheet
  var pdf = DriveApp.getFileById(originalSpreadsheet.getId()).getAs('application/pdf').getBytes(); // Convert PDF file
  var attach = {fileName:'Invoice',content:pdf, mimeType:'application/pdf'}; //Set File Name

// Send Email with attached PDF file   
  //MailApp.sendEmail(emailTo, subject, message, {attachments:[attach]});
  MailApp.sendEmail(emailTo, subject, message);
  SpreadsheetApp.flush(); // Make sure the cell is updated right away in case the script is interrupted

}

1 Ответ

0 голосов
/ 17 апреля 2020

Решение

Вы должны заключить в скобки l oop в {}, иначе в l oop.

* 1006 будет выполнена только самая следующая операция (sheet.getRange("H11").setValue(i);). * Соображения

Вы перезаписываете начальное значение для l oop внутри вашего l oop. Помните, что при повторной попытке отправить электронное письмо начальное значение будет равно конечному значению -> l oop будет выполняться только один раз. Я предлагаю взять значения l oop с другого листа, где вы можете отслеживать серийные номера счетов.

Код:

function SendInvoiceNew4() {
  var sheet = SpreadsheetApp.getActiveSheet();

// Loop from CELL Number Value to CELL Number Value EQUAL
  for(i=sheet.getRange("H11").getValue();i<=sheet.getRange("I11").getValue();i++) {// *************** Enter Start Invoice Serial No Cell Reference & Last Serial No Cell is Auto
    sheet.getRange("H11").setValue(i); //Auto Enter Next Loop Serail Number

    var InvDate = Utilities.formatDate(new sheet.getRange("H13").getValue(), "GMT+1", "MMM-yyyy") //Set invoice Date Format = MONTH & YEAR
    var emailTo = sheet.getRange("B12").getValue(); //Get Email Address from Data
    var message = 'Dear' + "\n\n" + 'See attached your attached invoice in PDF format.' + "\n\n" + 'Thanking you' + "\n" + 'www.xyz.in' + "\n" + '[DO NOT REPLY to this Email.]'; //Enter Custom Messagen ************************************************** Message Body
    var subject = 'Invoice for Month ' + InvDate;  // ************* Enter Cell Reference for Date of Invoice for Subject

    // Convert Invoice Sheet to PDF
    var originalSpreadsheet = SpreadsheetApp.getActive(); // Set original invoice sheet
    var pdf = DriveApp.getFileById(originalSpreadsheet.getId()).getAs('application/pdf').getBytes(); // Convert PDF file
    var attach = {fileName:'Invoice',content:pdf, mimeType:'application/pdf'}; //Set File Name

    // Send Email with attached PDF file   
    MailApp.sendEmail(emailTo, subject, message, {attachments:[attach]});
    //MailApp.sendEmail(emailTo, subject, message);
    SpreadsheetApp.flush(); // Make sure the cell is updated right away in case the script is interrupted
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...