Skip to content

Instantly share code, notes, and snippets.

@onefriendaday
Created February 20, 2019 16:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save onefriendaday/5397227c951538d90a993c6592f7fb1a to your computer and use it in GitHub Desktop.
Save onefriendaday/5397227c951538d90a993c6592f7fb1a to your computer and use it in GitHub Desktop.
Storyblok Cleanup script for a specific field
const StoryblokClient = require('storyblok-js-client')
// Insert your oauth token and folder id
const Storyblok = new StoryblokClient({
oauthToken: 'YOUR_OAUTH_TOKEN'
})
const fieldToDelete = 'my_field'
const componentName = 'page'
// Insert your source space and folder id
const spaceId = 'YOUR_SPACE_ID'
const StoryblokHelper = {
getAll(page) {
return Storyblok.get('spaces/' + spaceId + '/stories', {
per_page: 25,
page: page,
contain_component: componentName
})
},
cleanUp(tree) {
var traverse = function (jtree) {
if (jtree.constructor === Array) {
for (var item = 0; item < jtree.length; item++) {
traverse(jtree[item])
}
} else if (jtree.constructor === Object) {
if (jtree[fieldToDelete]) {
delete jtree[fieldToDelete]
}
for (var treeItem in jtree) {
traverse(jtree[treeItem])
}
}
}
traverse(tree)
return tree
}
}
async function getAllStories(){
var page = 1
var res = await StoryblokHelper.getAll(page)
var all = res.data.stories
var total = res.total
var lastPage = Math.ceil((res.total / 25))
while (page < lastPage){
page++
res = await StoryblokHelper.getAll(page)
res.data.stories.forEach((story) => {
all.push(story)
})
}
for (var i = 0; i < all.length; i++) {
console.log('Updating: ' + all[i].name)
try {
let storyResult = await Storyblok.get('spaces/' + spaceId + '/stories/' + all[i].id)
let updateResult = await Storyblok.put('spaces/' + spaceId + '/stories/' + all[i].id, {
story: {content: StoryblokHelper.cleanUp(storyResult.data.story.content)}
})
} catch(e) {
console.log(e)
}
}
return all
}
getAllStories().then((result) => {
console.log('Finished')
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment