Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save alirobe/b873a493435747c50f7f3752c28c789c to your computer and use it in GitHub Desktop.
Save alirobe/b873a493435747c50f7f3752c28c789c to your computer and use it in GitHub Desktop.
grab SharePoint list items with comments
var listUrl = "https://<TENANT>.sharepoint.com/sites/site/_api/<SITE>/lists/getByTitle('<LIST>')"
var url = `${listUrl}/items?$top=5000`;
var fetchOptions = { headers: { "Accept": "application/json;odata=nometadata" } };
var response = await fetch(url, fetchOptions);
var data = await response.json();
var items = data.value;
var commentsPromises = items.map(async item => {
var commentsUrl = `${listUrl}/items(${item.Id})/Comments()`;
var commentsResponse = await fetch(commentsUrl, fetchOptions);
if (commentsResponse.ok) {
var commentsData = await commentsResponse.json();
item.Comments = commentsData.value;
} else {
item.Comments = [];
}
});
await Promise.all(commentsPromises);
console.log(items);
@alirobe
Copy link
Author

alirobe commented Sep 18, 2024

might want to make sure you're getting all fields

var fieldsUrl = `${listUrl}/fields`;
var fieldsResponse = await fetch(fieldsUrl, fetchOptions);
var fieldsData = await fieldsResponse.json();
var fields = fieldsData.value;
console.log(fields.map(f => f.Title)); // or f.InternalName

fields to be added as &$select=field1,field2 on url (line 2) if needed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment