0

I have a list of tags with 2 columns, Title and Folder.

https://i.stack.imgur.com/WGgIz.png

I am currently querying the list using '/_api/web/lists/GetByTitle('Tags')/items' and am successfully retrieving the Title from the response body. I am unable to retrieve the value from the Folder column, though. In the response body there is a Folder value being returned but it is an object

{
  __deferred: {
    uri: "site/_api/Web/Lists(guid'##########')/Items(12)/Folder"
  }
}

Screenshot of column settings: https://i.stack.imgur.com/bVqD7.png

The Folder value I am looking for is a string. Any idea how I can retrieve both the Title and Folder values with the REST api?

  • What is the column type of Folder column? – Diksha Poddar Aug 6 at 20:36
  • @DikshaPoddar the column type is a single line of text – Omi in a hellcat Aug 6 at 20:38
  • @Omiinahellcat, can you please attach the screenshot of column settings for Folder column to your question? – Ganesh Sanap Aug 7 at 5:24
  • @GaneshSanap added – Omi in a hellcat Aug 7 at 13:05
  • @Omiinahellcat, can you please check what is the internal name of your Folder column? – Ganesh Sanap Aug 7 at 17:06
1

As per my understanding (by seeing the screenshots you attached), I think it is causing this issue because of using incorrect internal name of your Folder column.

Please check the internal name of your column using this method: Find the internal name of SharePoint column

Then you can use the REST endpoint like below:

<site-url>/_api/web/lists/getbytitle('Display Name of List')/items?$select=Title,InternalNameOfFolderColumn

Replace InternalNameOfFolderColumn with the internal name you got from above method.

Official documentation: Working with lists and list items with REST

Update from comments:

As per Dylan's comment:

I think the problem is because SharePoint allowed the creation of a field with the internal name of "Folder", which through the REST API is conflicting with the built-in Folder endpoint. I think the solution would be to create a new field with an internal name that is not exactly "Folder", and then change the display name back to "Folder", so that the internal name is not in conflict with the REST API.

| improve this answer | |
  • I used the method and the internal name in the url is Field=Folder. So it should be correct, still not sure why the values for Folder are returning deffered uri. – Omi in a hellcat Aug 7 at 17:31
  • very strange! is there any real time data in this list or is it still in development? if it is still in development, can you please try deleting this column and adding it again with same name? Or try creating the column with same name in another list and check if it works there. – Ganesh Sanap Aug 7 at 17:49
  • I think the problem is because SharePoint allowed the creation of a field with the internal name of "Folder", which through the REST API is conflicting with the built-in Folder endpoint. I think the solution would be to create a new field with an internal name that is not exactly "Folder", and then change the display name back to "Folder", so that the internal name is not in conflict with the REST API. – Dylan Cristy Aug 7 at 17:52
  • @DylanCristy Yes, I tried running this endpoint without creating a column with name folder and it was working (not giving any column missing errors). that means it is conflicting with the built-in folder endpoint as you mentioned. +1 for your suggestions. – Ganesh Sanap Aug 7 at 18:04
  • This is still in development, I will delete the column and give a different name and let you guys know. – Omi in a hellcat Aug 7 at 18:52
1

As both columns are Single Line of texts, the simple REST call should return their values.

However, try below REST API call to get specific columns only (Use internal names) -

/_api/web/lists/getByTitle('Tags')/items?$select=Title,Folder
| improve this answer | |
  • This is supposed to work in theory, but I am getting incorrect response value for the Folder column. Instead of getting a single line of text ex: "PPT", the folder values that are being returned are all objects, ex: {__deferred:{uri: "sites/_api/Web/Lists(guid)/Items(#)/Folder"}} – Omi in a hellcat Aug 6 at 21:14
0

Try the below Rest API call, it should work for you:

/_api/web/lists/getByTitle('list')/items(1)/FieldValuesAsHtml?$select=Title,Folder

enter image description here

| improve this answer | |
  • Returns {"error":{"code":"-2147024809, System.ArgumentException","message":{"lang":"en-US","value":"Item does not exist. It may have been deleted by another user."}} – Omi in a hellcat Aug 7 at 16:50
  • As the error said, this item with id 1doesn't exist. You could use the existing item in the rest api. Like items(12),or just use /_api/web/lists/getByTitle('list')/items/FieldValuesAsHtml?$select=Title,Folder to get all items. – Michael Han_MSFT Aug 7 at 19:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.