gpt4 book ai didi

google-apps-script - 谷歌幻灯片 : newly inserted table not found

转载 作者:行者123 更新时间:2023-12-04 02:58:36 26 4
gpt4 key购买 nike

我想知道这是怎么回事。我有两个功能,当一个接一个地调用时,它们都运行良好:

function createTable() {
var slidesPage = SlidesApp.openById('1QWRV4eQzGNNBz4SkR3WPurTL3O60oGYxQpBu63KrUoI').getSlides()[0];

var table = slidesPage.insertTable(7, 4);
}


function changeColumnWidth() {

var slidesPage = SlidesApp.openById('1QWRV4eQzGNNBz4SkR3WPurTL3O60oGYxQpBu63KrUoI').getSlides()[0];

var tableId = slidesPage.getTables()[0].getObjectId();

var requests = [{
updateTableColumnProperties: {
objectId: tableId,
"columnIndices": [ 1, 3],
"tableColumnProperties": {
"columnWidth": {
"magnitude": 80,
"unit": "PT"
}
},
"fields": "columnWidth"
}
}];

var createSlideResponse = Slides.Presentations.batchUpdate({
requests: requests
}, '1QWRV4eQzGNNBz4SkR3WPurTL3O60oGYxQpBu63KrUoI');

}

但是尝试将这两个功能结合起来,例如:

function combined() {
createTable();
changeColumnWidth();
}

我收到错误:

Invalid requests[0].updateTableColumnProperties: The object (SLIDES_API456304911_0) could not be found.

想知道 insertTable 方法是否是异步的,因此创建的表还没有准备好?谢谢你的帮助。

最佳答案

这个修改怎么样?请将此视为几种解决方法之一。在我的解决方法中,我针对您的情况使用了 saveAndClose()。使用它,我想将 SlidesApp 和 Slides API 的过程分开。

修改点:

  • 在插入表格后使用 saveAndClose() 保存并关闭幻灯片。
  • 返回插入表的对象 ID 以在 changeColumnWidth() 中使用。
  • changeColumnWidth() 中,Slides API 使用收到的对象 ID 修改表格。

修改后的脚本:

function combined() {
var tableId = createTable(); // Modified
changeColumnWidth(tableId); // Modified
}

function createTable() {
var slide = SlidesApp.openById('1QWRV4eQzGNNBz4SkR3WPurTL3O60oGYxQpBu63KrUoI'); // Modified
var slidesPage = slide.getSlides()[9]; // Modified
var table = slidesPage.insertTable(7, 4);
slide.saveAndClose(); // Added
return table.getObjectId();
}

function changeColumnWidth(tableId) { // Modified
// var slidesPage = SlidesApp.openById('1QWRV4eQzGNNBz4SkR3WPurTL3O60oGYxQpBu63KrUoI').getSlides()[0]; // This line is not used.
// var tableId = slidesPage.getTables()[0].getObjectId(); // This line is not used because slidesPage.getTables().length becomes 0.

var requests = [{
updateTableColumnProperties: {
objectId: tableId,
"columnIndices": [ 1, 3],
"tableColumnProperties": {
"columnWidth": {
"magnitude": 80,
"unit": "PT"
}
},
"fields": "columnWidth"
}
}];
var createSlideResponse = Slides.Presentations.batchUpdate({
requests: requests
}, '1QWRV4eQzGNNBz4SkR3WPurTL3O60oGYxQpBu63KrUoI');
}

注意事项:

  • 对于通过saveAndClose()保存并关闭的幻灯片,当幻灯片重新打开时,无法检索插入的表格。当再次尝试使用 getTables() 检索表格时,长度变为 0。但是在 Slides API 中,可以检索表格的对象 ID。所以我想这个问题可能可以通过在插入表后返回表的对象ID来解决。
    • 但我无法理解 getTables() 从重新打开的 Slide 中检索到的值变为“0”的原因。对不起。

引用:

如果此解决方法不是您想要的,我很抱歉。

关于google-apps-script - 谷歌幻灯片 : newly inserted table not found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51443918/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com