Как экспортировать таблицу в виде листа Google в Google App Maker с помощью кнопки - PullRequest
0 голосов
/ 06 марта 2019

Я много смотрел и пытался изменить несколько образцов наборов кодов, найденных в разных публикациях в Stack Overflow, а также в шаблонах документов в Google App Maker, но не могу на всю жизнь заставить работать функцию экспорта и отправки по электронной почте ,

Таблица пользовательских записей

Это область, где данные собираются и анализируются.

Населенный стол

Вот поля, с которыми я работаю:

Поля данных

И вот как выглядит экспортированный Лист, когда я прохожу движения и выполняю экспорт через вкладку Развертывание:

Экспортный лист

Наконец, это страница электронной почты, которую я создал на основе учебных пособий и примеров, которые я видел:

Страница электронной почты

Что я выучил до сих пор (основываясь на кругах, в которых я обхожу круг): 1. Электронные письма кажутся в основном прямыми, но мне не нужно отправлять сообщение, только вложение с темой, аналогично использованию кода:

    function sendEmail_(to, subject, body) {
     var emailObj = {
     to: to,
     subject: subject,
     htmlBody: body,
     noReply: true
     };

    MailApp.sendEmail(emailObj);
    }

Не уверен, как изменить "тело" на экспортируемый документ

  1. Чтобы упростить экспорт и просмотреть лист по нажатию кнопки, самое близкое решение, которое я нашел, находится в Образец документа , но ссылки в коде говорят только о компонентах на странице. Я не уверен, как изменить это, чтобы использовать таблицу, а также что изменить, чтобы получить ее в виде листа вместо документа.

Некоторым это может показаться тривиальным, но я новичок и изо всех сил пытаюсь обернуть голову вокруг того, что я делаю неправильно. Я смотрю на это почти неделю. Любая помощь будет оценена. Пожалуйста, не зажигайте меня! :)

1 Ответ

2 голосов
/ 06 марта 2019

В простейшей форме вы можете выполнить экспорт листа Google с помощью следующего серверного скрипта (он основан на модели под названием сотрудники):

function exportEmployeeTable() {

  //if only certain roles or individuals can perform this action include proper validation here

  var query = app.models.Employees.newQuery();
  var results = query.run();

  var fields = app.metadata.models.Employees.fields;

  var data = [];

  var header = [];

  for (var i in fields) {
    header.push(fields[i].displayName);
  }

  data.push(header);

  for (var j in results) {
    var rows = [];
    for (var k in fields) {
      rows.push(results[j][fields[k].name]);
    }
    data.push(rows);
  }

  if (data.length > 1) {
    var ss = SpreadsheetApp.create('Employee Export');
    var sheet = ss.getActiveSheet();
    sheet.getRange(1,1,data.length,header.length).setValues(data);

    //here you could return the URL for your spreadsheet back to your client by setting up a successhandler and failure handler
    return ss.getUrl();
  } else {
    throw new app.ManagedError('No Data to export!');
  }
}
...