Google App Script для копирования определенных ячеек c в документ Google? - PullRequest
0 голосов
/ 28 февраля 2020

Как я могу скопировать ячейки из Google Sheet? Как в другой ячейке

A32 - Заголовок в Google Doc B33 - Тема B34 - Основная часть 1 B35 - Основная часть 2

Так что в Документе Google он будет выглядеть как содержимое электронной почты.

Я пытался создать в коде, но он кажется близким, но я не знаю, как добавить новую строку и поставить заголовки и не изменять стили текста.

 function copyTest() {
      var ss = SpreadsheetApp.getActiveSheet();

      // create a new document and add student as editor
      var newDoc = DocumentApp.create("Copy: " + SpreadsheetApp.getActiveSpreadsheet().getName());
      var targetDoc = newDoc.getId();

      var header = ss.getRange('A32').getValues();
      var subj = "Subject: " + ss.getRange('D33').getValues();
      var copy = ss.getRange('D34:D40').getValues();

      var body = newDoc.getBody();

      body.editAsText().appendText(header);
      body.editAsText().appendText("\n\n");
      body.editAsText().appendText(subj);
      body.editAsText().appendText("\n\n");
      body.editAsText().appendText(copy);
    }

Спасибо за помощь!

1 Ответ

0 голосов
/ 02 марта 2020

Issue

Невозможно изменить стили заголовка и темы в созданном документе.

Solution

Вам просто нужно добавить Жирный и Размер шрифта Свойства вашего текста добавлены. Вы можете найти больше информации о том, как работать с этими методами здесь для жирного шрифта и здесь для размера шрифта Вот фрагмент кода с комментариями, объясняющими функциональность:

 function copyTest() {
      var ss = SpreadsheetApp.getActiveSheet();

      // create a new document and add student as editor
      var newDoc = DocumentApp.create("Copy: " + SpreadsheetApp.getActiveSpreadsheet().getName());
      var targetDoc = newDoc.getId();

      var header = ss.getRange('A32').getValues();
      // separated the parts that go in bold and big from the other parts to make it more clear.
      var subj = "Subject: ";
      var subjtitle = ss.getRange('B2').getValues();
      var copy = ss.getRange('D34:D40').getValues();

      var body = newDoc.getBody();

      body.editAsText().appendText(header);
      body.editAsText().appendText("\n\n");
      // Add these styles for headigs from the character 0 (corresponding to the beginning of the text to the
      // character 17 which is the last part of the Subject: . This will make those characters in between
      // bold and with that font size (25) and the rest will keep them as normal plain text.
      body.editAsText().appendText(subj).setBold(0,17,true).setFontSize(0, 17, 25);
      body.editAsText().appendText(subjtitle);
      body.editAsText().appendText("\n\n");
      body.editAsText().appendText(copy);
    }

Другим способом достижения этого является использование абзаца класса , использующего преимущества заголовков абзаца для установки стилей по умолчанию или для создания пользовательских стилей, таких как требуемый заголовок 4 .

Следующий фрагмент кода является лишь примером реализации этого:

function copyTest() {
  var ss = SpreadsheetApp.getActiveSheet();
  
  // create a new document and add student as editor
  var newDoc = DocumentApp.create("Copy: " + SpreadsheetApp.getActiveSpreadsheet().getName());
  var targetDoc = newDoc.getId();
  
  var headertext = ss.getRange('A1').getValue();
  var subj = "Subject: ";
  var subjtitle = ss.getRange('B2').getValue();
  var copy = ss.getRange('B3:B4').getValues();
  
  var body =  newDoc.getBody();
  
  var header = body.appendParagraph(headertext+'\n\n'+subj);
  header.setHeading(DocumentApp.ParagraphHeading.HEADING4);
    
}

Надеюсь, это помогло вам. Дайте мне знать, если вам нужно что-то еще или вы что-то не поняли. :)

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