不能使用Python API共享项目到组

3792
9
跳到解决方案
02-05-2019 05:28 am
JonathanBailey"id="imagedisplay
临时贡献者III

我有一个web地图,我希望与一组在ArcGIS企业共享。使用Portal,我可以将地图分享给群组:


但是,如果我尝试使用Python API与同一组共享相同的映射,则无法与组共享该映射:

cbmt分享org真正的basemaps_group标题“notSharedWith”Basemaps / Cartes de base“itemId”“21 e8f2ab90904f4ba38e44386f03851c”}


请注意,我能够在同一脚本中成功地与该组共享其他地图(例如,Esri basemaps)。

为什么我不能使用Python API与组共享地图?

标签(3)
1解决方案

接受的解决方案
JonathanBailey"id="imagedisplay_0
临时贡献者III

事实证明,尽管API文档是怎么说的从今天开始,您必须使用组的id而不是组的名称来共享项目。

cbmt分享org真正的basemaps_groupid

在原帖子中查看解决方案

9回复
JonathanBailey"id="imagedisplay_1
临时贡献者III

事实证明,尽管API文档是怎么说的从今天开始,您必须使用组的id而不是组的名称来共享项目。

cbmt分享org真正的basemaps_groupid

通过 匿名用户
不适用

你好,乔纳森,

我正在尝试使用您推荐的方法与用户共享内容,但无法找到它。

这是我写的一个函数。函数完成了,但实际上并没有显示共享了任何内容。

def ShareItemToGroup user1_ username1_ itemId_ groupId_ : disappointed_face:"标题=":disappointed_face:
打印 “单品: {} .format (itemId_))
打印 “集团: {} .format (groupId_))

Usergroups = user1_[ “组织”
Usercontent = user1_1 .items()
group = gis.groups.get(groupId_)

usercontent:
如果 (项目。id==itemId_):
试一试
item.share ( org =集团)
打印 "共享项目成功: {} 组: {} .format (itemId_ groupId_))
除了
打印 “出了什么问题……”
dcafdg"id="imagedisplay_3
通过
临时贡献者II

我也有同样的问题帕蒂Charlotteson.文档说您可以传入组ID字符串列表或相同的CSV。对我来说都不奏效。他们没有坠毁,但也没有按照我的要求去做。任何人在ESRI地理信息系统关注论坛上的bug ?

如Patty所示,您可以创建一个组对象并将其传递给Item。作为组参数共享。请注意,医生说你应该通过一个列表我就这么做了,效果很好。我只需要一个组,所以我只尝试了一个单元素列表。

0荣誉
SimonGIS"id="imagedisplay_4
通过
新贡献者III

谢谢@JonathanBailey-这也解决了我的问题

0荣誉
UriGilad_EsriAu"id="imagedisplay_5
Esri贡献者

还可能出现上述错误,因为不能与users_update_items=True的组共享项。

这是在创建组时定义的,以后不能更改:

ugilad_esriau_0 - 1618289652846. - png"li-image-url=

JustinReynolds"id="imagedisplay_6
临时贡献者III

这就是我的情况。您可以使用Update Capabilities向组共享,但是您需要向share方法传递一个额外的参数(allow_members_to_edit = True)。

如。

map_item_id = 'c42004226e264f5389dbaf7d6fea60ae' group_id = '591520ab3f2f421b83e271e1d40b74f3' # a Update Capable Group map_item = gis.content.get(map_item_id)如果map_item: share_map = map_item。分享(组=group_id, allow_members_to_edit=True) if share_map: print(share_map) # ------------- {'results': [{'itemId': 'c42004226e264f5389dbaf7d6fea60ae', 'success': True, 'notSharedWith': []}]}

-体育老师贾斯汀·雷诺兹
0荣誉
MikeLachance1"id="imagedisplay_7
通过
新贡献者III

我也有这个问题。必须传递组ID而不是组本身。

还遇到了一个意想不到的情况,当试图将项目共享到一个组时,将该项目从“组织”或“公共”设置回共享级别“所有者”。

这可能是因为我没有阅读足够的Python API文档,但我发现,虽然我只是试图用这个方法将一个项目添加到一个组中,因为我没有为everyone和org参数指定一个值,它也将它们应用到项目中,但使用默认值。所以项目被添加到预期的组中,并将它的everyone和org值设置为False,这将它的共享切换回“所有者”,破坏了该项目所属的应用程序和地图。

为了避免这种情况,首先使用与物品的财产共享来收集当前的共享设置,并将这些设置与您在使用时添加的任何共享添加项一起使用分享方法。否则,您可能会以编程方式无意中更改组织中许多项目的共享设置而告终,并且突然在不知道原因的情况下破坏了许多面向公众的资源。

我假设share方法将允许您更改指定的共享设置,但是我发现,如果我没有指定每个参数(即使是那些没有更改且是可选的参数),该方法无论如何都会将它们更改为默认值。在我看来不是很好,也许ESRI可以弥补这一点。

0荣誉
BrianWilson7"id="imagedisplay_8
通过
定期撰稿人

这是我得到的,我可以传入三个不同的组,它们都是我创建的,它会添加其中一个。没有什么关系,我传递单个id,或者传递一个id列表,或者传递一个组对象列表(如这里所示)——总是相同的——它将与一些组共享,而不是与其他组共享。一定有什么我看不见的神奇的"别和这个人分享"的标志。这是jupyter笔记本上的一个片段。

Service_id = "e5b7345b622040f096fa923a807f55d0" group_manager = gis。Groups gg = group_manager。search(query='GIS Team')[0] print("group id", gg.id) gc = group_manager.search(query='Cartographers')[0] print("group id", gc.id) ge = group_manager. id . 'search(query='应急管理')[0]print("组id", ge.id) content_manager = gis. id。内容服务= content_manager.get(service_id) print("service", service) #rval = gis.content。分享_items([service_id], groups=['Cartographers']) rval = service.share(groups=[gg,gc,ge]) print("rval =", rval) print('shared with', service.shared_with)

下面是输出。一切都“成功”,它总是返回“success=True”和“notSharedWith”的一些输入。

group id 53378c27d6b34383bc4fc2aa87fc630d group id 8b6bd8ec1a4142f988119e6290af51d7 group id 0682bb6881ab41b691bedafd2f2740b2 service <项目标题:"Surveys_MIL"类型:地图图像层所有者:bwilson@CLATSOP> rval = {'results': [{'itemId': 'e5b7345b622040f096fa923a807f55d0', 'success': True, 'notSharedWith': [", ' 53378c27d6b34383bc4fc287fc630d ', '8b6bd8ec1a4142f988119e6290af51d7']}]}与{'everyone': False, 'org': False, 'groups':[<组标题:“应急管理”所有者:bwilson@CLATSOP>]}

0荣誉
BrianWilson7"id="imagedisplay_9
通过
定期撰稿人

“魔法旗”和上面一样——我添加了这个,现在它起作用了。我想只要加上这个就行了。

, allow_members_to_edit = True

0荣誉