使用幻灯片服务的 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
吗?如果这不是你想要的,请修改它。
参考文献:
- Class SlidesApp
- setContentAlignment(contentAlignment)
- setParagraphAlignment(alignment)
- Enum ContentAlignment
- Enum ParagraphAlignment
如果我误解了您的问题,这不是您想要的结果,我深表歉意。
我在表格中有一个容器绑定脚本,它在复制幻灯片 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
吗?如果这不是你想要的,请修改它。
参考文献:
- Class SlidesApp
- setContentAlignment(contentAlignment)
- setParagraphAlignment(alignment)
- Enum ContentAlignment
- Enum ParagraphAlignment
如果我误解了您的问题,这不是您想要的结果,我深表歉意。