首页 > 解决方案 > AdminDirectory.Resources.Calendars.insert 失败

问题描述

我正在使用以下代码,但收到错误“对 directory.resources.calendars.insert 的 API 调用失败,错误实体已存在”请帮助我修复此错误。另外,我想在插入日历资源时放置错误句柄。我在下面的代码中在哪里放置错误处理程序

var cus = 'my_customer';

for (i=1; i < dataset.length; i++) {

   var res = {

     resourceName : dataset[i][0],

    resourceId : dataset[i][1],

    resourceType : dataset[i][2]
  }

}

 AdminDirectory.Resources.Calendars.insert(res, cus);    

标签: google-apps-script

解决方案


每个资源都需要一个独特的resourceId

错误

实体已存在

表示'my_customer'已经拥有与resourceId您尝试插入的相同的资源。

您可以使用 进行验证AdminDirectory.Resources.Calendars.list()

如果您的数据集有多个具有相同 resourceId 的条目,则可以避免错误,例如:

  for (i=0; i < dataset.length; i++) {
    var resources = AdminDirectory.Resources.Calendars.list(cus).items;    
    var existingIds = []; 
    resources.forEach(function(resource){existingIds.push(resource.resourceId)});
    if(existingIds.indexOf(dataset[i][1].toString()) ==-1){    
      var res = {        
        resourceName : dataset[i][0],        
        resourceId : dataset[i][1],        
        resourceType : dataset[i][2]
      }      
      AdminDirectory.Resources.Calendars.insert(res, cus);  
    }else{
      Logger.log("Resource with id " +   dataset[i][0] + " exists already");
    }
  }

笔记:

上面的示例不一定是最优雅的解决方案,您可以考虑先过滤数据集以删除重复项。


推荐阅读