La plupart du contenu (services de fonctionnalités, cartes) peut être copié en utilisant ArcGIS Online Assistant<\/A>. La méthode Python décrite ci-dessous est nécessaire pour un contenu plus complexe. Vous pouvez l'utiliser pour les tableaux de bord, les applications web, les enquêtes et les applications configurables. Elle ne fonctionnera pas pour ArcGIS StoryMaps ou ArcGIS Experience Builder.<\/P><\/P>
<\/P>
username = input("Entrez le nom d'utilisateur de l'organisation d'origine : ") from arcgis.gis import GIS gis1 = GIS("https://arcgis.com", username)<span class="line-numbers-rows"><span><<EMOJI_0>><\/span><span><<EMOJI_1>><\/span><span><<EMOJI_2>><\/span><\/span>
username_2 = input("Entrez le nom d'utilisateur de l'organisation cible : ") gis2 = GIS("https://arcgis.com", username_2)<span class="line-numbers-rows"><span><<EMOJI_3>><\/span><span><<EMOJI_4>><\/span><\/span>
items = gis1.content.search(query = "id:") print(str(len(items)) + " élément sera cloné :") items <span class="line-numbers-rows"><span><<EMOJI_5>><\/span><span><<EMOJI_6>><\/span><span><<EMOJI_7>><\/span></span>
items = gis1.content.search(query = "id:(5f3b5c9325314fc3a11c1d649d37461e OR fc1b539234f44ee89845ea926e5e393f)")<span class="line-numbers-rows"><span><<EMOJI_8>><\/span></span>
def deep_copy_content(input_list): for item in input_list: try: print("Clonage " + item.title) copy_list = [] copy_list.append(item) gis2.content.clone_items(copy_list, copy_data=True, search_existing_items=True) print("Clonage réussi " + item.title) except Exception as e: print(e) print("La fonction est terminée") deep_copy_content(items)<span class='line-numbers-rows'><span><<EMOJI_9>></span><span><<EMOJI_10>></span><span><<EMOJI_11>></span><span><<EMOJI_12>></span><span><<EMOJI_13>></span><span><<EMOJI_14>></span><span><<EMOJI_15>></span><span><<EMOJI_16>></span><span><<EMOJI_17>></span><span><<EMOJI_18>></span><span><<EMOJI_19>></span><span><<EMOJI_20>></span><span><<EMOJI_21>></span></span>
Si vous copiez un élément qui dépend d'autres éléments, vous devriez voir tous les éléments copiés. Dans l'exemple ci-dessous, j'ai seulement déplacé TestDashboard. Test Map et Test_Data ont également été copiés.<\/P>
Si vous ne voulez pas que cela se produise, définissez copy_data=False <\/EM>dans le code ci-dessus.<\/P><\/P>Vous pouvez en savoir plus sur la fonction clone_items ici :
items =<\/SPAN> gis1.<\/SPAN>content.<\/SPAN>search(<\/SPAN>query=<\/SPAN>"owner: {}"<\/SPAN>.<\/SPAN>format(<\/SPAN>username)<\/SPAN>, <\/SPAN>max_items=<\/SPAN>num_items, <\/SPAN>sort_field=<\/SPAN>'id'<\/SPAN>, <\/SPAN>sort_order=<\/SPAN>'desc'<\/SPAN>)<\/SPAN>items<\/SPAN><\/SPAN><\/SPAN><\/CODE><\/PRE>2. Relancez la cellule. Elle vous demandera combien d'éléments vous souhaitez copier.<\/P>3. Relancez la dernière cellule pour copier le contenu.<\/P><\/P>Vous pouvez trouver d'autres façons de rechercher des éléments dans le document Search reference<\/A>.<\/P> <\/P>
Thanks for this @HeatherSmith
I successfully cloned a couple of feature layers across from AGOL to our Enterprise system which definitely is a win for us. However, when I try to copy a complete Survey it gives me the following error:
Failed to update Form Death Animal Survey - Jordi: 'NoneType' object is not iterable"
It seems to be pointing at the form but I am not sure how to fix this? I have also tried to only clone the form part of the survey to see if that would work but unfortunately not. Thank you very much!
Hi - I used the code exactly as above to copy a dashboard from one AGOL to another, but it only copied the dashboard and not the associated web map and feature layers. The username owns all the items, any thoughts on way it only copied the dashboard?
def deep_copy_content(input_list):for item in input_list:try:print("Cloning " + item.title)copy_list = []copy_list.append(item)gis2.content.clone_items(copy_list, copy_data=True, search_existing_items=True)print("Successfully cloned " + item.title)except Exception as e:print(e)print("The function has completed")deep_copy_content(items)
Cheers
Chris
P.S if I just copy the web map then the associated data does get copied. But when using the dashboard ID just the dashboard copies over.
@HeatherSmith Thank you!
@Juan_Toro-Killion I am told that yes, you can use clone_items() to move content between any two organizational deployments.
Is it possible to use this workflow to copy from ArcGIS Online to Enterprise (Portal)? @HeatherSmith
Thanks,
@HeatherSmith and @cmlosaria_gis
To those of you who were getting the "list out of range" error, how did you resolve it? I have no issues cloning service definitions, file geodatabases and hosted feature layers with only one layer. I get the error anytime I try to clone a hosted feature layer that contains multiple layers and/or tables. These layers and tables are related to one another, if that makes a difference.
Teri
Cloning Plan Compare (latest) ('Failed to create Feature Service Thu Duc City Proposed Land Use Plan: list index out of range', <Item title:"Thu Duc City Proposed Land Use Plan" type:Feature Layer Collection owner:gisencityadmin>) The function has completed
Hi, I am also facing the same problem. I don't use any HTML tags on this application, What could be the problem?
HI guys,
im runnig the script in jupyter and im getting this error in several items, any idea??
('Failed to create Feature Service Departamentos: Your request has timed out.\n(Error Code: 504)', <Item title:"Departamentos" type:Feature Layer Collection owner:NicolasM>)
thanks!!!
Has anyone had the issue "failed to create feature service name of item : 'available', None
I am trying to transfer a web map
Update: I realized the issue was because I was trying to transfer a web map with a feature layer that was hosted on my original account. The account I was trying to transfer to is a public account and they can't host feature layers.
@NikolasHawley that issue is normally related to data not being able to be copied to/from a destination. If you have a `field` with HTML in it or generic text, make sure it's sanitized before the clone operation.
Here is a list of supported HTML tags:
https://doc.arcgis.com/en/arcgis-online/reference/supported-html.htm
Has someone made this into a notebook that can just be shared directly already as opposed to copying from here?
Also, I got this error trying to clone a hosted feature service with related tables... any insight?
Cloning xyz ('Failed to create Feature Service xyz: list index out of range', <Item title:"xyz" type:Feature Layer Collection owner:xyz>) The function has completed
Thank you @BernardRIXEN
The documentation for cloning content is here: https://developers.arcgis.com/python/guide/cloning-content/ which lists the items that are possible to clone. Future changes should be reflected there.There is also now an article which presents a workaround method for copying new StoryMap stories: https://developers.arcgis.com/python/sample-notebooks/clone-storymap-version2/
Hello @HeatherSmith,
great and well explained article. You mentioned "It will not work for ArcGIS StoryMaps or ArcGIS Experience Builder". Where in the Python API or REST API documentation are these limitations listed and updated ?
Regards, Bernard
Les membres connectés peuvent publier, suivre les mises à jour, et plus encore. Nouveau ici ? Inscrivez-vous gratuitement.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.