Постоянство содержимого в гугл скрипте "blob" - PullRequest
1 голос
/ 26 июня 2019

Я добавляю вместе несколько строк кода в скрипты Google.Важным моментом является (учтите, что у меня есть хороший mySpreadsheet с содержимым, также установлены source и folder):

    [...]
    var mySpreadsheet = SpreadsheetApp.open(DriveApp.getFileById(source.getId()).makeCopy("test", folder))

  [...]
  var sheet = mySpreadsheet.getSheets()[0];

  sheet.clear();

  //email, obj, msg are string set before
  sendPdf(mySpreadsheet, pdfName, email, obj, msg);

}

function sendPdf(sheet, pdfName, email, object, message) {

  //save to pdf
  var pdfFile = sheet.getBlob().getAs('application/pdf').setName(pdfName);

  // Send the freshly constructed email 
  MailApp.sendEmail(email, object message, {attachments:[pdfFile]});
}

Сценарий работает, это означает, что скриптсоздает PDF-файл и прикрепляет его к письму.После очистки (только) листа файла я ожидал получить пустой PDF-файл.mySpreadsheet пусто, но вложенный PDF-файл содержит все содержимое, скопированное из источника.Откуда эти данные?Где они «хранятся», когда лист очищается?Заранее спасибо.

1 Ответ

1 голос
/ 27 июня 2019
  • В вашей ситуации вы хотите получить электронную таблицу, используя sheet.clear() для 1-го листа в качестве файла вложения электронной почты.

Если мое понимание верно, как насчет этого?модификация?

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

  • Хотя я не уверен относительно всего вашего сценария, после запуска sheet.clear() кажется, что электронная таблица не сохраняется.Я думал, что это причина вашей проблемы.
    • Сохраняя электронную таблицу после использования sheet.clear(), большой двоичный объект можно получить из обновленной электронной таблицы.

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

Пожалуйста, измените его следующим образом и проверьте его снова.

С:
sheet.clear();
До:
sheet.clear();
SpreadsheetApp.flush(); // Added

Ссылка:

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

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