I am trying to create a geoprocessing service that can sense which layer that the user selected from. I have created a sample script to show what I have tried so far. It has a parameter called "Selection" which is of data type "Feature Set" and a string output parameter.
<SPAN class="keyword token">import</SPAN> arcpy
<SPAN class="comment token"># params</SPAN>
feature_layer <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>GetParameter<SPAN class="punctuation token">(</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># user selection</SPAN>
feature_layer_as_text <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>GetParameterAsText<SPAN class="punctuation token">(</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">)</SPAN>
desc <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Describe<SPAN class="punctuation token">(</SPAN>feature_layer<SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddMessage<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"baseName: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>desc<SPAN class="punctuation token">.</SPAN>baseName<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddMessage<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"catalogPath: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>desc<SPAN class="punctuation token">.</SPAN>catalogPath<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddMessage<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"children: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>desc<SPAN class="punctuation token">.</SPAN>children<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddMessage<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"childrenExpanded: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>desc<SPAN class="punctuation token">.</SPAN>childrenExpanded<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddMessage<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"dataElementType: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>desc<SPAN class="punctuation token">.</SPAN>dataElementType<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddMessage<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"dataType: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>desc<SPAN class="punctuation token">.</SPAN>dataType<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddMessage<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"extension: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>desc<SPAN class="punctuation token">.</SPAN>extension<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddMessage<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"file: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>desc<SPAN class="punctuation token">.</SPAN>file<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddMessage<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"fullPropsRetrieved: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>desc<SPAN class="punctuation token">.</SPAN>fullPropsRetrieved<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddMessage<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"metadataRetrieved: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>desc<SPAN class="punctuation token">.</SPAN>metadataRetrieved<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddMessage<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"name: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>desc<SPAN class="punctuation token">.</SPAN>name<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddMessage<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"path: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>desc<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddMessage<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"feature_layer_as_text: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>feature_layer_as_text<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>SetParameterAsText<SPAN class="punctuation token">(</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">,</SPAN> \
<SPAN class="string token">"baseName: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>desc<SPAN class="punctuation token">.</SPAN>baseName<SPAN class="punctuation token">)</SPAN> \
<SPAN class="operator token">+</SPAN> <SPAN class="string token">"<br>catalogPath: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>desc<SPAN class="punctuation token">.</SPAN>catalogPath<SPAN class="punctuation token">)</SPAN> \
<SPAN class="operator token">+</SPAN> <SPAN class="string token">"<br>children: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>desc<SPAN class="punctuation token">.</SPAN>children<SPAN class="punctuation token">)</SPAN> \
<SPAN class="operator token">+</SPAN> <SPAN class="string token">"<br>childrenExpanded: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>desc<SPAN class="punctuation token">.</SPAN>childrenExpanded<SPAN class="punctuation token">)</SPAN> \
<SPAN class="operator token">+</SPAN> <SPAN class="string token">"<br>dataElementType: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>desc<SPAN class="punctuation token">.</SPAN>dataElementType<SPAN class="punctuation token">)</SPAN> \
<SPAN class="operator token">+</SPAN> <SPAN class="string token">"<br>dataType: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>desc<SPAN class="punctuation token">.</SPAN>dataType<SPAN class="punctuation token">)</SPAN> \
<SPAN class="operator token">+</SPAN> <SPAN class="string token">"<br>extension: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>desc<SPAN class="punctuation token">.</SPAN>extension<SPAN class="punctuation token">)</SPAN> \
<SPAN class="operator token">+</SPAN> <SPAN class="string token">"<br>file: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>desc<SPAN class="punctuation token">.</SPAN>file<SPAN class="punctuation token">)</SPAN> \
<SPAN class="operator token">+</SPAN> <SPAN class="string token">"<br>fullPropsRetrieved: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>desc<SPAN class="punctuation token">.</SPAN>fullPropsRetrieved<SPAN class="punctuation token">)</SPAN> \
<SPAN class="operator token">+</SPAN> <SPAN class="string token">"<br>metadataRetrieved: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>desc<SPAN class="punctuation token">.</SPAN>metadataRetrieved<SPAN class="punctuation token">)</SPAN> \
<SPAN class="operator token">+</SPAN> <SPAN class="string token">"<br>name: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>desc<SPAN class="punctuation token">.</SPAN>name<SPAN class="punctuation token">)</SPAN> \
<SPAN class="operator token">+</SPAN> <SPAN class="string token">"<br>path: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>desc<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">)</SPAN> \
<SPAN class="operator token">+</SPAN> <SPAN class="string token">"<br>"</SPAN> \
<SPAN class="operator token">+</SPAN> <SPAN class="string token">"<br>feature_layer_as_text: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>feature_layer_as_text<SPAN class="punctuation token">)</SPAN> \
<SPAN class="punctuation token">)</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>When I run it in ArcMap, I can easily see which layer was selected, but when I publish as a geoprocessing script and use it in web app builder, the output string is something like:
baseName: {EA09D0E5-F384-4742-A3FB-1A865BAEF30A}
catalogPath: in_memory\{EA09D0E5-F384-4742-A3FB-1A865BAEF30A}
children: []
childrenExpanded: True
dataElementType: DEFeatureClass
dataType: FeatureRecordSetLayer
extension:
file: {EA09D0E5-F384-4742-A3FB-1A865BAEF30A}
fullPropsRetrieved: True
metadataRetrieved: False
name: {EA09D0E5-F384-4742-A3FB-1A865BAEF30A}
path: in_memory
feature_layer_as_text: in_memory\{EA09D0E5-F384-4742-A3FB-1A865BAEF30A}<SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>One way I can tell which layer was selected is by using "arcpy.ListFields(feature_layer)" and figuring out from the fields which layer was selected. Is there a better or more direct way to fetch the name of the layer that was selected in web app builder?