Как добавить разрыв раздела в Google Do c с помощью редактора сценариев - PullRequest
1 голос
/ 21 апреля 2020

Я пытаюсь написать скрипт, который добавит разрыв раздела в указанной позиции c в Google Do c.

Я просмотрел справочный материал и различные функции, но не могу понять, как это сделать. Я натолкнулся на справочную информацию по Google Do c API для класса java с именем InsertSectionBreakRequest, но честно говоря, я не могу этого сделать. Вот что я написал, но функция не распознается:

function myFunction() {
  // Spreadsheet with the layout data
  var SourceId = "12DyHvTblahblahblahblahblahJ30g72bhLxKQ_NK0";
  var BlankDocId = "16NUdJblahblahblahblahblahdsPtWd11T826YJsxyk";

  // Open the spreadsheet and read everything in it
  var ss = SpreadsheetApp.openById(SourceId).getSheetByName("Layout");
  var data = ss.getRange(1,1, ss.getLastRow(), ss.getLastColumn());

  // Open the document so that it can be created
  var bdoc = DocumentApp.openById(BlankDocId);

  // First just set a variable for the active document
  bdoc.InsertSectionBreakRequest();  

Теперь я понимаю, что InsertSectionBreakRequest - это класс java, и это означает, что это, вероятно, объект, который создается в gdo c сама по себе, и что эта слабая попытка вызова функции с тем же именем довольно неудачна, но я вроде как ухватился за str aws здесь. Спасибо за ваше терпение.

Любая помощь высоко ценится. Спасибо.

1 Ответ

1 голос
/ 21 апреля 2020

Мое понимание проблемы:

  • Вы хотите использовать InsertSectionBreakRequest метода batchUpdate в API Документов Google.
  • Вы хотите добиться этого с помощью скрипта Google Apps.

Точки изменения:

Шаблон 1:

В этом шаблоне разрыв раздела добавляется в начало документа.

Пример сценария:

const documentId = "###";  // Please set the Document ID.

const resource = {requests: [{insertSectionBreak: {sectionType: "NEXT_PAGE", location: {index: 1}}}]};
Docs.Documents.batchUpdate(resource, documentId);
  • В этом случае NEXT_PAGE используется как sectionType. При использовании CONTINUOUS раздел начинается сразу после последнего абзаца предыдущего раздела. Ref

Шаблон 2:

В этом шаблоне разрыв раздела добавляется к абзацу, включая {{sectionbreak}}. И абзац удаляется после добавления разрыва раздела. В этом случае я подумал, что в вашей цели может быть достигнута add a section break in a specific position on a google doc.

Пример сценария:

Когда вы используете этот сценарий, скопируйте и вставьте {{sectionbreak}} в тело документа и запустите его.

const documentId = "###";  // Please set the Document ID.

const doc = DocumentApp.openById(documentId);
const body = doc.getBody();
const find = body.findText("{{sectionbreak}}");
if (find) {
  const child = find.getElement().getParent();
  const childIndex = body.getChildIndex(child);
  const docObj = Docs.Documents.get(documentId).body.content;
  const resource = {requests: [
    {insertSectionBreak: {
      sectionType: "NEXT_PAGE",
      location: {index: docObj[childIndex + 1].startIndex}
    }}
  ]};
  Docs.Documents.batchUpdate(resource, documentId);
  find.getElement().removeFromParent();
}

Шаблон 3:

В этом шаблоне используется метод insertPageBreak в службе Class Body of Document. В качестве базового сценария используется сценарий шаблона 2. В этом случае разрыв добавляется к абзацу, включая {{sectionbreak}}.

Пример сценария:

При использовании этого сценария скопируйте и вставьте {{sectionbreak}} в тело документа и запустите его.

const documentId = "###";  // Please set the Document ID.

const doc = DocumentApp.openById(documentId);
const body = doc.getBody();
const find = body.findText("{{sectionbreak}}");
if (find) {
  const child = find.getElement().getParent();
  const childIndex = body.getChildIndex(child);
  body.insertPageBreak(childIndex);
  find.getElement().removeFromParent();
}

Примечание:

  • Пожалуйста, запустите скрипт после того, как API Документов был включен в Advanced Google services.

Ссылки:

...