正在寻找使用 Google Apps 脚本或 DOCS API 为 google 文档中的段落添加边框的方法?

Looking for a way to add borders to a paragraph in a google doc using a Google Apps Script or perhaps the DOCS API?

可以通过 格式 菜单为 google 文档段落添加边框 > 段落样式 > 边框和底纹.

结果如下所示:

但是,我还没有弄清楚如何使用 Google Apps 脚本来做到这一点?

我参考了documentation关于设置属性,但是没有出现边框。似乎可以使用工作表和幻灯片来设置它们 - 但这不是我所追求的用例。

我通过 node.js 使用 DOCS API 下载示例 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 脚本 - 但是 DOCS API 似乎不支持边框。

如果有任何线索、提示或提示,将不胜感激?

  • 您想使用 Google 文档 API 在 Google 文档中添加边框 API。
  • 您想使用 Node.js 和 Google Apps 脚本实现此目的。
  • 您已经能够使用 Google 文档 API.
  • 获取和放置 Google 文档的值

如果我的理解是正确的,这个答案怎么样?请将此视为几个可能的答案之一。

可以通过 Google 文档 API 中的 batchUpdate 方法添加边框。在这种情况下,使用 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}.

将边框添加到 Document 的顶部
{
  "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);
  }
);

模式二:

在此模式中,使用了 Google Apps 脚本。这样的话,上面的request body不用修改就可以使用了。

示例脚本:

在您使用此脚本之前,please enable Docs API at Advanced Google services.

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运行时间。

参考文献:

如果我误解了您的问题并且这不是您想要的方向,我深表歉意。