The following Google Apps Script is a few snippets of some larger code where I needed to write (and then later read back) a number of User Properties in one go. Rather than creating multiple single write requests it is more efficient to do this in bulk.
I also needed a way to bulk read/extract these values later from a JavaScript Object that would allow me to easily call the Property name and get its value in return.
Access User Properties and get the values in an Object |
The Code
Putting a number of key:value pairs into User Properties is simple enough via the 'setProperties(properties)' method:
var userProperties = PropertiesService.getUserProperties();
var newProperties = {
sourceFolderId: '123',
destinationFolderId: '456',
};
userProperties.setProperties(newProperties);
With regards to getting them back out we can simply reference them directly from the Object:
// log each item from User Properties
Logger.log(userProperties.destinationFolderId);
Logger.log(userProperties.sourceFolderId);
Download
Read & write multiple User Properties download (please use 'Overview' > 'Make a copy' for your own version).
Hi Phil - little trick, .getProperties() will return an Object so there is no need to loop over as you can reference directly e.g. Logger.log(userProperties.destinationFolderId); :)
ReplyDeleteThank you Martin, always happy to learn/improve. I've updated the post / code to reflect this method.
DeleteTa
The official documentation isn't very clear on this one
DeleteThank you for the article. Great idea. It is especially relevant if you are struggling to reduce the number of function calls subject to quotas (https://developers.google.com/apps-script/guides/services/quotas#current_limitations/).
ReplyDeleteProperties read/write is 50,000/day.
However, here we may run into another limit: Properties value size is 9 KB/val.
The way out is to control the size of the property, and if the quota is exceeded, split the property into several parts and load them separately.
But here the question arises: How to calculate the size of a property in kilobytes?
Thank you.
DeleteGood question and honestly not something I've yet come across - as I typically store small/controlled values in the Properties at this time. Somebody else may have a suggestion however ...