Google apps script 使用幻灯片服务的setContentAlignment和setParagraphAlignment方法时出错
我在Sheets中有一个容器绑定脚本,它在幻灯片页面中插入一个新表,然后在该幻灯片表中复制给定Sheets范围的数据 复制数据(逐单元格)后,我要设置垂直和水平对齐。为此,我使用了Google apps script 使用幻灯片服务的setContentAlignment和setParagraphAlignment方法时出错,google-apps-script,google-sheets-api,google-slides-api,Google Apps Script,Google Sheets Api,Google Slides Api,我在Sheets中有一个容器绑定脚本,它在幻灯片页面中插入一个新表,然后在该幻灯片表中复制给定Sheets范围的数据 复制数据(逐单元格)后,我要设置垂直和水平对齐。为此,我使用了setContentAlignment(TOP)和setParagraphAlignment(CENTER),但这两种方法都返回以下错误: ReferenceError:未定义“顶部”。(第295行,文件“代码”) ReferenceError:未定义“中心”。(第296行,文件“代码”) 完整代码如下 functio
setContentAlignment(TOP)
和setParagraphAlignment(CENTER)
,但这两种方法都返回以下错误:
ReferenceError:未定义“顶部”。(第295行,文件“代码”)
ReferenceError:未定义“中心”。(第296行,文件“代码”)
完整代码如下
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)
}
}
}
}
功能测试(){
var rnFindings=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Findings').getRange(2,2,4,2);
var slPrez=SlidesApp.openById('1PdGCWmgUMxBnMIXgPEVQoyxm8EMvE-ub0eejV8ISmLk');
var slSlide=slPrez.getSlides()[0];
Logger.log(slide.getLayout().getLayoutName());
复制表幻灯片(RN、slPrez、slSlide);
}
功能copyTableToSlides(rnTable、slPrez、slSlide){
var iRow=rnTable.getNumRows();
var iCol=rnTable.getNumColumns();
var peTitle=slide.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);//硬编码高度使表格高度适合内容
//var starTableRange=create2DArray(iRow,iCol);
对于(r=1;r这个修改怎么样
发件人:
致:
- 请使用
SlidesApp.ContentAlignment
作为setContentAlignment
的枚举
- 请使用
SlidesApp.ParagraphAlignment
作为setParagraphAlignment
的枚举
注:
setParagraphAlignment(LEFT)
的LEFT
没有值。因此,在您的情况下,START
?如果这不是您想要的,请修改它
参考资料:
如果我误解了你的问题,而这不是你想要的结果,我很抱歉。我的回答是否向你展示了你想要的结果?你能告诉我吗?这对我的研究也很有用。如果这样做有效,其他与你有相同问题的人也可以将你的问题作为一个可以解决的问题。如果你有对于我的回答,我很抱歉。当时,我可以问一下你目前的情况吗?我想研究解决你的问题。谢谢Tanaike!看起来你确实找到了解决我问题的方法。我目前正在实施中,但是这成为了一组更大的功能的一部分,因此我还无法实现测试。一旦我做了第一次测试并确认您的解决方案有效,我会将其标记为已接受!两方面都正确,这就是我所缺少的。非常感谢您的帮助!@Vincent Courtmanche感谢您的回复。我很高兴您的问题得到解决。也谢谢您。
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);
}