Ищете способ добавить границы к абзацу в Google Do c с помощью скрипта Google Apps или, возможно, API DOCS? - PullRequest
0 голосов
/ 26 февраля 2020

Можно добавить границу к пункту google do c через меню Формат > Стили абзаца > Границы и штриховка .

enter image description here

Результат выглядит так:

enter image description here

Однако у меня есть Не удалось решить, как это сделать с помощью скриптов Google Apps?

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

Я использовал DOCS API через node.js, чтобы загрузить образец JSON, возвращенный из документ, содержащий нужную мне рамку.

function printDocTitle(auth) {
  const documentId = '###';
  const docs = google.docs({version: 'v1', auth});
  docs.documents.get({
    documentId: documentId,
  }, (err, res) => {
    if (err) return console.log('The API returned an error: ' + err);
    const doc = res.data;
    console.log(JSON.stringify(doc, null, 4));
  })
}

Часть JSON, представляющая эффект, который я хотел создать, выглядела так:

{
  "startIndex": 82,
  "endIndex": 83,
  "paragraph": {
      "elements": [
          {
              "startIndex": 82,
              "endIndex": 83,
              "textRun": {
                  "content": "\n",
                  "textStyle": {
                      "fontSize": {
                          "magnitude": 12,
                          "unit": "PT"
                      },
                      "baselineOffset": "NONE"
                  }
              }
          }
      ],
      "paragraphStyle": {
          "namedStyleType": "NORMAL_TEXT",
          "alignment": "END",
          "direction": "LEFT_TO_RIGHT",
          "borderBottom": {
              "color": {
                  "color": {
                      "rgbColor": {}
                  }
              },
              "width": {
                  "magnitude": 1.5,
                  "unit": "PT"
              },
              "padding": {
                  "magnitude": 1,
                  "unit": "PT"
              },
              "dashStyle": "SOLID"
          }
      }
  }
}

Интересно, Я мог бы как-то использовать это вместо использования Google Scripts - но API DOCS не поддерживает границы.

Был бы признателен за любые подсказки, подсказки или советы?

Ответы [ 2 ]

2 голосов
/ 27 февраля 2020
  • Вы хотите добавить границу в Документ Google с помощью API Документов Google.
  • Вы хотите добиться этого с помощью Node.js и скрипта Google Apps.
  • Вы уже были возможность получать и размещать значения для Документа Google с помощью API Документов Google.

Если мое понимание правильное, как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.

Границу можно добавить методом batchUpdate в Google Docs API. В этом случае используется UpdateParagraphStyleRequest. Например, из объекта JSON в вашем вопросе, когда используется следующий параметр,

"paragraphStyle": {
    "namedStyleType": "NORMAL_TEXT",
    "alignment": "END",
    "direction": "LEFT_TO_RIGHT",
    "borderBottom": {
        "color": {"color": {"rgbColor": {}}},
        "width": {"magnitude": 1.5, "unit": "PT"},
        "padding": {"magnitude": 1, "unit": "PT"},
        "dashStyle": "SOLID"
    }
}

Тело запроса для метода batchUpdate выглядит следующим образом. В этом случае, в качестве примера, граница добавляется в верхнюю часть документа с использованием {"startIndex": 1, "endIndex": 2}.

{
  "requests": [
    {
      "updateParagraphStyle": {
        "paragraphStyle": {
          "namedStyleType": "NORMAL_TEXT",
          "alignment": "END",
          "direction": "LEFT_TO_RIGHT",
          "borderBottom": {
            "width": {"magnitude": 1.5, "unit": "PT"},
            "padding": {"magnitude": 1, "unit": "PT"},
            "dashStyle": "SOLID"
          }
        },
        "range": {"startIndex": 1, "endIndex": 2},
        "fields": "namedStyleType,alignment,direction,borderBottom"
      }
    }
  ]
}

Шаблон 1:

В этом шаблоне используется Node.js.

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

При запуске следующего сценария в верхней части документа Google добавляется рамка.

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

const docs = google.docs({ version: "v1", auth });
const requests = [
  {
    updateParagraphStyle: {
      paragraphStyle: {
        namedStyleType: "NORMAL_TEXT",
        alignment: "END",
        direction: "LEFT_TO_RIGHT",
        borderBottom: {
          width: { magnitude: 1.5, unit: "PT" },
          padding: { magnitude: 1, unit: "PT" },
          dashStyle: "SOLID"
        }
      },
      range: { startIndex: 1, endIndex: 2 },
      fields: "namedStyleType,alignment,direction,borderBottom"
    }
  }
];
docs.documents.batchUpdate(
  {
    documentId: documentId,
    requestBody: { requests }
  },
  (err, res) => {
    if (err) {
      console.log(err);
      return;
    }
    console.log(res.data);
  }
);

Шаблон 2:

В этом шаблоне используется Google Apps Script. В этом случае приведенное выше тело запроса можно использовать без изменений.

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

Прежде чем использовать этот сценарий, , пожалуйста, включите Docs API в службах Advanced Google.

const documentId = "###";  // Please set the Document ID.
const requests = [
  {
    updateParagraphStyle: {
      paragraphStyle: {
        namedStyleType: "NORMAL_TEXT",
        alignment: "END",
        direction: "LEFT_TO_RIGHT",
        borderBottom: {
          width: { magnitude: 1.5, unit: "PT" },
          padding: { magnitude: 1, unit: "PT" },
          dashStyle: "SOLID"
        }
      },
      range: { startIndex: 1, endIndex: 2 },
      fields: "namedStyleType,alignment,direction,borderBottom"
    }
  }
];
const res = Docs.Documents.batchUpdate({requests}, documentId);
console.log(res);
  • В этом случае, пожалуйста, включите среду выполнения V8.

Ссылки:

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

1 голос
/ 26 февраля 2020

Использование скрипта Google Apps:


Пример:

// Define a style with black border.
var borderStyle = {};
borderStyle[DocumentApp.Attribute.BORDER_COLOR] = '#000000';
borderStyle[DocumentApp.Attribute.BORDER_WIDTH] = 2;

// Insert paragraph with border.
var body = DocumentApp.getActiveDocument().getBody();
var paragraph = body.appendParagraph("My Paragraph");
paragraph.setAttributes(borderStyle);
...