Google 幻灯片 API deleteObject() 当对象不存在时

Google Slides API deleteObject() when object not exists

我想更新 Google 幻灯片中的现有 object/image。只要对象存在,这就有效:

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);

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

出现以下错误信息:

Invalid requests[0].deleteObject: The object (image01) could not be found.

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

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

示例脚本:

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 包含在示例数据中。

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

var sampledata = {key1: "value1", key2: "value2"};
if (~JSON.stringify(sampledata).indexOf('value2')) { 
  Logger.log("ok")
}