Прикрепить книгу Excel или преобразовать листы в Excel, а затем отправить через Gmail с помощью gscript, чтобы получатель мог редактировать книгу? - PullRequest
0 голосов
/ 18 июня 2019

Я хочу иметь возможность отправить электронное письмо на более 100 моих писем с вложением.Вложение должно быть редактируемым файлом Excel для получателей.Я могу получить к нему доступ в виде Excel или листов, в зависимости от того, что проще.

Я пробовал столько, сколько смог найти уже онлайн.И я могу отправить PDF, и я могу отправить ссылку Google Drive, которая предоставляет редактируемый документ листов;но я хочу, чтобы конечный пользователь мог просматривать и редактировать его, даже если у него нет Google Диска.

Этот файл успешно отправляет редактируемый файл PDF:

function sendEmails() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = 1; // Number of rows to process
// Fetch the range of cells A2:B2
var dataRange = sheet.getRange(startRow, 1, numRows, 1);
// Fetch values for each row in the Range.
var data = dataRange.getValues();
for (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'
var file = DriveApp.getFileById("xxxxxxxxx");
MailApp.sendEmail(emailAddress, subject, message, {attachments: [file]});
}
}

Я пробовал этот файл, чтобы иметь возможность прикрепить документ (в надежде редактируемый файл Excel), но я получаю код ошибки о том, чтодокумент отсутствует (хотя это тот же самый идентификатор документа, который я использую в приведенном выше примере, который работает):

function sendEmails() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = 1; // Number of rows to process
// Fetch the range of cells A2:B2
var dataRange = sheet.getRange(startRow, 1, numRows, 1);
// Fetch values for each row in the Range.
var data = dataRange.getValues();
for (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'
var file = DocumentApp.openById("xxxxxxxxx");
MailApp.sendEmail(emailAddress, subject, message, {attachments: [file]});
}
}

Я хотел, чтобы он отправил файл Excel, но он даже не найдет документдаже когда я использую тот же ID документа, который я использую в 1-м синтаксисе выше, который работает.

Это отправляет документ Excel ... но получателю не удается открыть.Это неправильно форматирование?

  function getGoogleSpreadsheetAsExcel(){
  try {
 /*var ss = SpreadsheetApp.getActive();*/
 var ss = DriveApp.getFileById("xxxxx");
var url = "https://docs.google.com/feeds/download/spreadsheets/Export? 
 key=" + ss + "&exportFormat=xlsx";
  var params = {
  method      : "get",
  headers     : {"Authorization": "Bearer " + ScriptApp.getOAuthToken()},
  muteHttpExceptions: true
 };
var blob = UrlFetchApp.fetch(url, params).getBlob(); 
blob.setName(ss.getName() + ".xlsx");
MailApp.sendEmail("xxxx", "Google Sheet to Excel", "The 
XLSX file is attached", {attachments: [blob]});
} catch (f) {
Logger.log(f.toString());
}
}

1 Ответ

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

Вот правильный синтаксис для отправки электронной почты из Gmail с приложением Excel, используя скрипт Google

function excelemail(){
var file = DriveApp.getFileById('1pJpDI2HD28_gPWGnj-emV0L4rXBBS0HC');

GmailApp.sendEmail('xxxx', 'Attachment example', 'Please see the attached file.' , {attachments: [file], name: 'Automatic Emailer Script' })
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...