Как отправить указанную c часть листа по электронной почте? - PullRequest
2 голосов
/ 17 января 2020

этот сценарий отправляет копию pdf на мой адрес электронной почты, когда я набираю Отправить в ячейке L6, этот код отправляет весь лист, и мне нужно отправить как только A1: J22, есть идеи?

function onEdit2(e) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var r  = sheet.getRange('L6').getValue();
  if (r == "Send") {
    var ss = SpreadsheetApp.getActiveSpreadsheet()
    var ssID = ss.getId();
    var sheetgId = ss.getActiveSheet().getSheetId();
    var sheetName = ss.getName();

    var token = ScriptApp.getOAuthToken();

    var email = "EMAIL HERE";
    var subject = "Daily report ";
    var body = "Please find the attached Daily report";

    var url = "https://docs.google.com/spreadsheets/d/"+ssID+"/export?" 
    + "format=xlsx" +  "&gid="+sheetgId+ "&portrait=true" + 
      "&exportFormat=pdf";

    var result = UrlFetchApp.fetch(url, {
      headers: {
        'Authorization': 'Bearer ' +  token
      }
    });

    var contents = result.getContent();

    MailApp.sendEmail(email,subject ,body, {
      attachments: [{
        fileName: sheetName + ".pdf", 
        content: contents, 
        mimeType: "application//pdf"
      }]
    })
  }
}

1 Ответ

1 голос
/ 17 января 2020
  • Вы хотите получить ячейки A1:J22 и хотите создать их для данных PDF.
  • Вы хотите добиться этого с помощью Google Apps Script.

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

Точки модификации:

  • В этой модификации создайте временную таблицу и скопируйте значения ячеек A1:J22 в Это. Затем временный лист преобразуется в файл PDF. И временный лист удаляется.

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

Когда ваш скрипт модифицирован, пожалуйста, измените его следующим образом.

function onEdit2(e) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var r  = sheet.getRange('L6').getValue();
  if (r == "Send") {
    var ss = SpreadsheetApp.getActiveSpreadsheet()
    var ssID = ss.getId();

    var sheet = ss.getActiveSheet(); // Added
//    var sheetgId = ss.getActiveSheet().getSheetId(); // removed

    var sheetName = ss.getName();
    var token = ScriptApp.getOAuthToken();
    var email = "EMAIL HERE";
    var subject = "Daily report ";
    var body = "Please find the attached Daily report";

    var tempSheet = ss.insertSheet("tempSheet"); // Added
    sheet.getRange("A1:J22").copyTo(tempSheet.getRange(1, 1)); // Added
    SpreadsheetApp.flush(); // Added
    var sheetgId = tempSheet.getSheetId(); // Added

    var url = "https://docs.google.com/spreadsheets/d/"+ssID+"/export?" + "format=xlsx" +  "&gid="+sheetgId+ "&portrait=true" + "&exportFormat=pdf";
    var result = UrlFetchApp.fetch(url, {headers: {'Authorization': 'Bearer ' +  token}});
    var contents = result.getContent();
    MailApp.sendEmail(email,subject ,body, {attachments: [{fileName: sheetName + ".pdf", content: contents, mimeType: "application//pdf"}]});

    ss.deleteSheet(tempSheet); // Added
  }
}

Ссылки:

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

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