Skip to content

Instantly share code, notes, and snippets.

@kaffeskogen
Last active February 24, 2017 08:43
Show Gist options
  • Select an option

  • Save kaffeskogen/3d1a4cb430d2b75b2c5290112ef7d4cf to your computer and use it in GitHub Desktop.

Select an option

Save kaffeskogen/3d1a4cb430d2b75b2c5290112ef7d4cf to your computer and use it in GitHub Desktop.
ES6 CSOM SharePoint WebPart Update
(async () => {
SP.ClientContext.prototype.executeQuery = async function() {
return new Promise((resolve, reject) => this.executeQueryAsync(resolve, (a, b) => { reject(b.get_message()); }));
};
SP.WebParts.WebPartDefinitionCollection.prototype.toArray = function() {
let retArr = [];
for (let i = 0, len = this.get_count(); i < len; i++)
retArr.push(this.get_item(i));
return retArr;
};
let ctx = SP.ClientContext.get_current();
let pageFile = ctx.get_web().getFileByServerRelativeUrl(_spPageContextInfo.serverRequestPath);
let limitedWebPartManager = pageFile.getLimitedWebPartManager(SP.WebParts.PersonalizationScope.shared);
let webPartDefinitionCollection = limitedWebPartManager.get_webParts();
ctx.load(webPartDefinitionCollection, 'Include(Id,WebPart,WebPart.Title,WebPart.Properties)');
await ctx.executeQuery();
/*
let wpArr = webPartDefinitionCollection
.toArray()
.map(wpDef => wpDef.get_webPart().get_properties().get_fieldValues());
console.table(wpArr, ['Title', 'TitleUrl', 'WorkbookUri', 'ListName', 'ContentLink']);
*/
webPartDefinitionCollection
.toArray()
.filter(wpDef => {
let titleUrl = wpDef.get_webPart().get_properties().get_item('TitleUrl');
return titleUrl.includes('/faulty/path');
})
.forEach(wpDef => {
let wp = wpDef.get_webPart();
let wpProps = wp.get_properties();
let wpPropsFieldValues = wpProps.get_fieldValues();
console.log(wpPropsFieldValues); // logs properties as json
// let titleUrl = wpProps.get_item('TitleUrl');
wpProps.set_item('TitleUrl', 'https://google.se');
wpDef.saveWebPartChanges();
});
await ctx.executeQuery();
console.log('%cDone!', 'color: green;');
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment