Скопируйте лист в Google Doc - PullRequest
2 голосов
/ 06 февраля 2020

Я пытаюсь скопировать таблицу из Google Sheet, содержащую изображения, в Google do c. До сих пор мне удалось выполнить несколько вещей, но не тот результат, который мне нужен.

Источник Google Sheet - таблица с картинками, заполненная по формуле Importrange из другого листа Google.

  1. Копирование с помощью appendTable не копирует изображения
  2. Мне удалось экспортировать таблицу в BLOB-объект PDF, но не удалось преобразовать ее в обычный Google do c.

Любая помощь приветствуется.

function printDocument() {

  var source = SpreadsheetApp.getActive();
  var spreadsheetId=source.getId();
  var sourcesheet = source.getSheetByName('Printable Shooting Plan');
  var sheetId = sourcesheet.getSheetId();
  var current_lastrow = getLastPopulatedRow(sourcesheet);
  var srcData = sourcesheet.getRange('A1:G'+current_lastrow).getValues();


  var parents = DriveApp.getFileById(source.getId()).getParents();
  if (parents.hasNext()) {
    var folder = parents.next();
  }
  else {
    folder = DriveApp.getRootFolder();
  }

  var doc = DocumentApp.create("Shooting Plan");
  var body = doc.getBody();

  body.insertParagraph(0, 'Shooting Plan').setHeading(DocumentApp.ParagraphHeading.HEADING1).setAlignment(DocumentApp.HorizontalAlignment.CENTER);

  table = body.appendTable(srcData);
  table.getRow(0).editAsText().setBold(true);

  // Copy doc to the directory we want it to be in. Delete it from root.
  var docFile = DriveApp.getFileById(doc.getId());
  folder.addFile(docFile);
  DriveApp.getRootFolder().removeFile(docFile);   
}

function onOpen() {
  var submenu = [{name:"Save Doc", functionName:"printDocument"}];
  SpreadsheetApp.getActiveSpreadsheet().addMenu('Export', submenu);  
}


function getLastPopulatedRow(sheet) {
  var data = sheet.getDataRange().getValues();
  for (var i = data.length-1; i > 0; i--) {
    for (var j = 0; j < data[0].length; j++) {
      if (data[i][j]) return i+1;
    }
  }
  return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...