是否有某些已记录但不受支持的 Google Slides AppScript?
Are there certain Google Slides AppScript that are documented but not supported?
我正在尝试在 Google 幻灯片中操作 table,但似乎有记录的操作会在 AppScript 中引发错误。
https://developers.google.com/apps-script/reference/slides/table
被注释掉的行抛出以下错误:
Updating the size of this page element type is not supported.
var table = (slides[page])
.insertTable(rows, columns)
.setTop (0)
.setLeft(0)
//.setWidth(presentation.getPageWidth());
//.setHeight(presentation.getPageHeight());
这个答案怎么样?我也和你确认了同样的情况。我认为这可能是一个错误。因为使用SlidesAPI时,可以创建调整宽高的table。因此,在当前的解决方法中,当创建 table 时需要调整 table 的大小时,我使用幻灯片 API 创建 table。示例脚本如下
为了使用示例脚本,在您 运行 脚本之前,请在高级 Google 服务和 API 控制台中启用幻灯片 API,如下所示。
在高级 Google 服务中启用幻灯片 API v1
- 在脚本编辑器上
- 资源 -> 高级 Google 服务
- 打开 Google 幻灯片 API v1
在 API 控制台启用幻灯片 API
- 在脚本编辑器上
- 资源 -> 云平台项目
- 查看API控制台
- 在“开始”中,单击 "Explore and enable APIs"。
- 在左侧,单击“库”。
- 在"Search for APIs & services"处输入"Slides"。然后点击 "Google Slides API".
- 单击“启用”按钮。
- 如果API已经启用,请不要关闭。
示例脚本 1:
当你的脚本使用幻灯片修改后API,它变成如下。
var presentation = SlidesApp.getActivePresentation();
var slides = presentation.getSlides();
var resource = {"requests":[{"createTable": {
"rows": 2,
"columns": 3,
"elementProperties": {
"size": {
"width": {"unit": "PT", "magnitude": presentation.getPageWidth()},
"height": {"unit": "PT", "magnitude": presentation.getPageHeight()},
},
"pageObjectId": slides[0].getObjectId()},
}
}]};
Slides.Presentations.batchUpdate(resource, presentation.getId());
示例脚本 2:
如果要修改现有table的大小,可以使用下面的脚本
var presentation = SlidesApp.getActivePresentation();
var slides = presentation.getSlides();
var table = slides[0].getTables()[0];
var tableObjectId = table.getObjectId();
var resource = {"requests": [
{"updateTableColumnProperties": {
"objectId": tableObjectId,
"tableColumnProperties": {"columnWidth": {"unit": "PT", "magnitude": presentation.getPageWidth() / table.getNumColumns()}}, "fields": "*"}
},
{"updateTableRowProperties": {
"objectId": tableObjectId,
"tableRowProperties": {"minRowHeight":{"unit": "PT", "magnitude": presentation.getPageHeight() / table.getNumRows()}},"fields":"*"}
}
]};
Slides.Presentations.batchUpdate(resource, presentation.getId());
参考资料:
- Advanced Google Services
- Google Slides API
- CreateTableRequest
- UpdateTableColumnPropertiesRequest
- UpdateTableRowPropertiesRequest
如果这不是您想要的解决方法,我深表歉意。
我正在尝试在 Google 幻灯片中操作 table,但似乎有记录的操作会在 AppScript 中引发错误。
https://developers.google.com/apps-script/reference/slides/table
被注释掉的行抛出以下错误:
Updating the size of this page element type is not supported.
var table = (slides[page])
.insertTable(rows, columns)
.setTop (0)
.setLeft(0)
//.setWidth(presentation.getPageWidth());
//.setHeight(presentation.getPageHeight());
这个答案怎么样?我也和你确认了同样的情况。我认为这可能是一个错误。因为使用SlidesAPI时,可以创建调整宽高的table。因此,在当前的解决方法中,当创建 table 时需要调整 table 的大小时,我使用幻灯片 API 创建 table。示例脚本如下
为了使用示例脚本,在您 运行 脚本之前,请在高级 Google 服务和 API 控制台中启用幻灯片 API,如下所示。
在高级 Google 服务中启用幻灯片 API v1
- 在脚本编辑器上
- 资源 -> 高级 Google 服务
- 打开 Google 幻灯片 API v1
在 API 控制台启用幻灯片 API
- 在脚本编辑器上
- 资源 -> 云平台项目
- 查看API控制台
- 在“开始”中,单击 "Explore and enable APIs"。
- 在左侧,单击“库”。
- 在"Search for APIs & services"处输入"Slides"。然后点击 "Google Slides API".
- 单击“启用”按钮。
- 如果API已经启用,请不要关闭。
示例脚本 1:
当你的脚本使用幻灯片修改后API,它变成如下。
var presentation = SlidesApp.getActivePresentation();
var slides = presentation.getSlides();
var resource = {"requests":[{"createTable": {
"rows": 2,
"columns": 3,
"elementProperties": {
"size": {
"width": {"unit": "PT", "magnitude": presentation.getPageWidth()},
"height": {"unit": "PT", "magnitude": presentation.getPageHeight()},
},
"pageObjectId": slides[0].getObjectId()},
}
}]};
Slides.Presentations.batchUpdate(resource, presentation.getId());
示例脚本 2:
如果要修改现有table的大小,可以使用下面的脚本
var presentation = SlidesApp.getActivePresentation();
var slides = presentation.getSlides();
var table = slides[0].getTables()[0];
var tableObjectId = table.getObjectId();
var resource = {"requests": [
{"updateTableColumnProperties": {
"objectId": tableObjectId,
"tableColumnProperties": {"columnWidth": {"unit": "PT", "magnitude": presentation.getPageWidth() / table.getNumColumns()}}, "fields": "*"}
},
{"updateTableRowProperties": {
"objectId": tableObjectId,
"tableRowProperties": {"minRowHeight":{"unit": "PT", "magnitude": presentation.getPageHeight() / table.getNumRows()}},"fields":"*"}
}
]};
Slides.Presentations.batchUpdate(resource, presentation.getId());
参考资料:
- Advanced Google Services
- Google Slides API
- CreateTableRequest
- UpdateTableColumnPropertiesRequest
- UpdateTableRowPropertiesRequest
如果这不是您想要的解决方法,我深表歉意。