使用幻灯片服务的 setContentAlignment 和 setParagraphAlignment 方法时出错

Error when using setContentAlignment and setParagraphAlignment methods of Slides Service

我在表格中有一个容器绑定脚本,它在复制幻灯片 table.

中给定表格范围内的数据之前在幻灯片页面中插入一个新的 table

复制数据(逐个单元格)后,我想设置垂直和水平对齐方式。为此,我使用 setContentAlignment(TOP)setParagraphAlignment(CENTER),但是这两个 return 都出现以下错误:

ReferenceError: "TOP" is not defined. (line 295, file "Code")

ReferenceError: "CENTER" is not defined. (line 296, file "Code")

完整代码如下

function test() {
  
  var rnFindings = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Findings').getRange(2,2,4,2);
  var slPrez = SlidesApp.openById('1PdGCWmgUMxBnMIXgPEVQoyxm8EMvE-ub0eejV8ISmLk');
  var slSlide = slPrez.getSlides()[0];
  Logger.log(slSlide.getLayout().getLayoutName());
  
  copyTableToSlides(rnFindings, slPrez, slSlide);
        
}

function copyTableToSlides(rnTable, slPrez, slSlide) {

  var iRow = rnTable.getNumRows();
  var iCol = rnTable.getNumColumns();
  var peTitle = slSlide.getPageElements()[0];
    var iLeft = peTitle.getLeft();
    var iTop = (peTitle.getTop() * 2) + peTitle.getHeight();
      var iWidth = slPrez.getPageWidth() - (iLeft * 2);
  var slTable = slSlide.insertTable(iRow, iCol, iLeft, iTop, iWidth, 10); // hard-coding height lets table height fit to content

  // var starTableRange = create2DArray(iRow, iCol);
  
  for (r = 1; r <= iRow; r++) {
    for (c = 1; c <= iCol; c++) {
      slTable.getCell(r-1,c-1).getText().setText(rnTable.getCell(r,c).getValue());
    }
  }

  for (r = 1; r <= iRow; r++) {
    for (c = 1; c <= iCol; c++) {
      if (c == 1) {
        slTable.getCell(r-1,c-1).setContentAlignment(TOP);
        slTable.getCell(r-1,c-1).getText().getParagraphStyle().setParagraphAlignment(CENTER);
      } else {
        slTable.getCell(r-1,c-1).setContentAlignment(TOP);
        slTable.getCell(r-1,c-1).getText().getParagraphStyle().setParagraphAlignment(LEFT)
      }
    }
  }

}

根据Google's App Script Reference,这些是正确的 ENUM 值。我不知道这里还有什么问题。

当我的代码容器绑定到表格文件时,如何设置幻灯片中每个单元格的垂直和水平对齐方式 table?

提前致谢,

文森特

这个修改怎么样?

发件人:

if (c == 1) {
  slTable.getCell(r-1,c-1).setContentAlignment(TOP);
  slTable.getCell(r-1,c-1).getText().getParagraphStyle().setParagraphAlignment(CENTER);
} else {
  slTable.getCell(r-1,c-1).setContentAlignment(TOP);
  slTable.getCell(r-1,c-1).getText().getParagraphStyle().setParagraphAlignment(LEFT)
}

收件人:

if (c == 1) {
  slTable.getCell(r-1,c-1).setContentAlignment(SlidesApp.ContentAlignment.TOP);
  slTable.getCell(r-1,c-1).getText().getParagraphStyle().setParagraphAlignment(SlidesApp.ParagraphAlignment.CENTER);
} else {
  slTable.getCell(r-1,c-1).setContentAlignment(SlidesApp.ContentAlignment.TOP);
  slTable.getCell(r-1,c-1).getText().getParagraphStyle().setParagraphAlignment(SlidesApp.ParagraphAlignment.START);
}
  • 请使用 SlidesApp.ContentAlignment 作为 setContentAlignment 的枚举。
  • 请使用 SlidesApp.ParagraphAlignment 作为 setParagraphAlignment 的枚举。

注:

  • setParagraphAlignment(LEFT)LEFT 没有值。那么在您的情况下,是 START 吗?如果这不是你想要的,请修改它。

参考文献:

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