0

我想更新 Google 幻灯片中的现有对象/图像。只要对象存在,这就会起作用:

var requests = [
    {
      "deleteObject": {
        "objectId": 'image01'
      }
    },
    {
      "createImage": {
        "url": imageUrl,
        "objectId": 'image01',
        "elementProperties": {
          "pageObjectId": pageId,
          "size": {
            "width": {
              "magnitude": 250,
              "unit": "PT"
            },
            "height": {
              "magnitude": 250,
              "unit": "PT"
            }
          },
          "transform": {
            "scaleX": 1,
            "scaleY": 1,
            "translateX": 200,
            "translateY": 100,
            "unit": "PT"
          }
        }
      }
    }
  ];
  var response = Slides.Presentations.batchUpdate({'requests': requests}, presentationId);

但是,如果用户之前删除了演示文稿中的对象,则不会重新创建它。

出现以下错误消息:

无效请求 [0].deleteObject:找不到对象 (image01)。

如何查询演示文稿中是否存在对象?

4

1 回答 1

0

使用 slides.presentations.get 检索对象列表怎么样?为了确认对象是否存在,它使用slides/pageElements/objectIdslides.presentations.get 的字段。您可以使用对象列表知道对象的存在。

示例脚本:

var response = Slides.Presentations.get(presentationId);
response.slides.forEach(function(e1, i1){
  e1.pageElements.forEach(function(e2){
    Logger.log("Page %s, objectId %s", i1 + 1, e2.objectId);
  });
});

结果 :

Page 1.0, objectId ###
Page 2.0, objectId ###
Page 3.0, objectId ###

如果这对你没有用,我很抱歉。

编辑 :

如果要从整个 JSON 中搜索值,可以使用以下简单脚本。当value2包含在 中时sampledata~JSON.stringify(sampledata).indexOf('value2')变为真。在此示例ok中显示,因为 value2 包含在 sampledata 中。

但这有点牵强。如果你能知道 JSON 的完整结构,我认为使用 key 比较 value 更好。

var sampledata = {key1: "value1", key2: "value2"};
if (~JSON.stringify(sampledata).indexOf('value2')) { 
  Logger.log("ok")
}
于 2017-09-26T00:07:26.563 回答