首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Google文档AppScript -为双方设置单元格边框样式

Google文档AppScript -为双方设置单元格边框样式
EN

Stack Overflow用户
提问于 2022-09-20 20:14:24
回答 1查看 98关注 0票数 0

我有一个for循环,添加行和单元格。我希望这些细胞只有底部边框,厚度1pt和黑色。做这件事最好的方法是什么?这些文档缺乏示例

代码语言:javascript
运行
复制
for (var r = 0; r < rowdata.length; r++) { //loop through data for each row

  var newrow = table.insertTableRow(1+r)

  //add cells and values 
  var cell1 = newrow.appendTableCell(rowdata[r][0])
  var cell2 = newrow.appendTableCell(rowdata[r][1]) 

  //align cell text to center
  var cellStyle = {};
  cellStyle[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = DocumentApp.HorizontalAlignment.CENTER;

  cell1.getChild(0).asParagraph().setAttributes(cellStyle)
  cell2.getChild(0).asParagraph().setAttributes(cellStyle)

  
  //set bottom border line width to 1pt, line color to black
  //set the other borders line width to 0pt
  
  ???

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-20 23:22:14

我相信你的目标如下。

  • 在附加行时,希望将底部边框设置为1 pt宽度和黑色,并将其他边框设置为0 pt宽度。

在目前阶段,似乎很不幸的是,(DocumentApp)无法管理每一个边界。但是,幸运的是,当使用Docs时,可以实现您的目标。在这个答案中,我建议使用Docs实现您的目标。当您的脚本被修改时,它将如下所示。

修改脚本:

使用此脚本之前的请在高级谷歌服务上启用Google.

代码语言:javascript
运行
复制
function myFunction() {
  var doc = DocumentApp.getActiveDocument(); // Please set your Document.
  var body = doc.getBody();
  var table = body.getTables()[0]; // Please set your table.
  var rowdata = [[,,,],[,,,],,,]; // Please set your values.

  // --- This is your showing script.
  for (var r = 0; r < rowdata.length; r++) {
    var newrow = table.insertTableRow(1 + r);
    var cell1 = newrow.appendTableCell(rowdata[r][0]);
    var cell2 = newrow.appendTableCell(rowdata[r][1]);
    var cellStyle = {};
    cellStyle[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = DocumentApp.HorizontalAlignment.CENTER;
    cell1.getChild(0).asParagraph().setAttributes(cellStyle);
    cell2.getChild(0).asParagraph().setAttributes(cellStyle);
  }
  // ---

  doc.saveAndClose();
  var docId = doc.getId();
  var i = body.getChildIndex(table);
  var index = Docs.Documents.get(docId).body.content[i + 1].startIndex;
  var requests = [{ updateTableCellStyle: { tableCellStyle: { borderRight: { dashStyle: "SOLID", width: { magnitude: 0, unit: "PT" }, color: { color: {} } }, borderLeft: { dashStyle: "SOLID", width: { magnitude: 0, unit: "PT" }, color: { color: {} } } }, tableStartLocation: { index }, fields: "borderRight,borderLeft" } }];
  Docs.Documents.batchUpdate({ requests }, doc.getId());
}
  • 运行此脚本时,会将几行附加到文档上的表中,并将垂直边框的宽度更改为0 pt。这样,只显示了底部的边框。

参考文献:

添加:

从你下面的答复来看,

这就是我想要的,只有一个不同之处。我所附加的表已经有一些行,我希望它们的边框样式保持不变。我只想将您的代码应用于新添加的行!

当您想将上面的请求体反映到附加的行中时,下面的修改如何?

在显示脚本中,您使用的是var newrow = table.insertTableRow(1 + r);。在这种情况下,行从第二行开始放置。使用此脚本,下面的示例脚本如何?

示例脚本:

代码语言:javascript
运行
复制
function myFunction() {
  var doc = DocumentApp.getActiveDocument(); // Please set your Document.
  var body = doc.getBody();
  var table = body.getTables()[0]; // Please set your table.
  var rowdata = [[,,,],[,,,],,,]; // Please set your values.

  // --- This is your showing script.
  for (var r = 0; r < rowdata.length; r++) {
    var newrow = table.insertTableRow(1 + r);
    var cell1 = newrow.appendTableCell(rowdata[r][0]);
    var cell2 = newrow.appendTableCell(rowdata[r][1]);
    var cellStyle = {};
    cellStyle[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = DocumentApp.HorizontalAlignment.CENTER;
    cell1.getChild(0).asParagraph().setAttributes(cellStyle);
    cell2.getChild(0).asParagraph().setAttributes(cellStyle);
  }
  // ---

  doc.saveAndClose();
  var docId = doc.getId();
  var i = body.getChildIndex(table);
  var index = Docs.Documents.get(docId).body.content[i + 1].startIndex;

  // I modified this request body.
  var requests = [{ updateTableCellStyle: { tableCellStyle: { borderRight: { dashStyle: "SOLID", width: { magnitude: 0, unit: "PT" }, color: { color: {} } }, borderLeft: { dashStyle: "SOLID", width: { magnitude: 0, unit: "PT" }, color: { color: {} } } }, tableRange: { tableCellLocation: { tableStartLocation: { index }, rowIndex: 1 }, rowSpan: rowdata.length, columnSpan: rowdata[0].length }, fields: "borderRight,borderLeft" } }];

  Docs.Documents.batchUpdate({ requests }, doc.getId());
}
  • 运行此脚本时,从第二行附加行中移除垂直行。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73792168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档