AI-generated Key Takeaways
-
Learn how to download a file using GET and upload it using HTTP POST by attaching the file's blob data in the payload.
-
Understand how to zip multiple blobs into a single archive and then unzip that archive back into individual blobs using the Utilities class.
-
Discover how to parse a CSV string into a two-dimensional array using
Utilities.parseCsv
. -
Explore the use of
Utilities.formatString
for sprintf-like string formatting with different specifiers. -
See how to encode binary data to a text format using
Utilities.base64Encode
and decode it back usingUtilities.base64Decode
.
Download and upload a file
function sendHttpPost() { // Download a file now (GET), so we can upload it in the HTTP POST below. const response = UrlFetchApp.fetch('https://www.google.com/favicon.ico'); const fileBlob = response.getBlob(); const payload = { 'fieldOne' : 'value for field one', 'fieldTwo' : 'value for field two', 'fileAttachment': fileBlob }; // Because payload is a JavaScript object, it will be interpreted as // an HTML form. (We do not need to specify contentType; it will // automatically default to either 'application/x-www-form-urlencoded' // or 'multipart/form-data') const options = { 'method' : 'post', 'payload' : payload }; UrlFetchApp.fetch('http://example.com/upload_form.cgi', options); }
Zip and unzip a file
function zipUnzip() { const googleFavIconUrl = 'https://www.google.com/favicon.ico'; const googleLogoUrl = 'https://www.google.com/images/srpr/logo3w.png'; // Fetch the Google favicon.ico file and get the Blob data. const faviconBlob = UrlFetchApp.fetch(googleFavIconUrl).getBlob(); const logoBlob = UrlFetchApp.fetch(googleLogoUrl).getBlob(); // zip now references a blob containing an archive of both faviconBlob and // logoBlob. const zip = Utilities.zip([faviconBlob, logoBlob], 'google_images.zip'); // This will now unzip the blobs. const files = Utilities.unzip(zip); }
Parse a csv file
function parseCsv() { // This will create a 2 dimensional array of the format // [[a, b, c], [d, e, f]] const csvString = 'a,b,c\nd,e,f'; const data = Utilities.parseCsv(csvString); console.log(data); }
Format a string
function formatString() { // You can use sprintf-like string formatting using '%'-style format // strings. // will be: '123.456000' Utilities.formatString('%11.6f', 123.456); // will be: ' abc' Utilities.formatString('%6s', 'abc'); }
base64 encode and decode a string
function base64Encoding() { // base64 encoding is used to encode binary data to a text format // you may need to do this if your transfer method can't handle spaces, // non-English characters, etc. // We'll instantiate a blob here for clarity. const blob = Utilities.newBlob('A string here'); // Let's return the blob data as a byte[]. const encoded = Utilities.base64Encode(blob.getBytes()); // This will log 'QSBzdHJpbmcgaGVyZQ==' console.log(encoded); const decoded = Utilities.base64Decode(encoded); // This will log the original string. console.log(Utilities.newBlob(decoded).getDataAsString()); }
Get a string with the date in the account timezone
function getDateStringInTimeZone() { // Default to the current date and time. For a particular date, pass a // date string to new Date() such as // "February 17, 2016 13:00:00 -0500". Always include a timezone // specifier in the date string, or the date string may be interpreted // using a different timezone than you intend. const date = new Date(); // Default to the account timezone. To customize, see // https://developers.google.com/google-ads/api/reference/data/codes-formats#timezone-ids // e.g. const timezone = "Europe/Berlin" const timeZone = AdsApp.currentAccount().getTimeZone(); // For other formats, see // https://developers.google.com/apps-script/reference/utilities/utilities#formatdatedate-timezone-format // If constructing a new date from the returned date string, be sure the // format includes the time zone letter 'Z', or the date string may be // interpreted using a different timezone than you intend. const format = 'MMM dd, yyyy HH:mm:ss Z'; return Utilities.formatDate(date, timeZone, format); }
Get date in the past
function getDateInThePast() { // Number of milliseconds in a day. const MILLIS_PER_DAY = 1000 * 60 * 60 * 24; // Default to the current date and time. For a particular date, pass a // date string to new Date() such as // "February 17, 2016 13:00:00 -0500". Always include a timezone // specifier in the date string, or the date string may be interpreted // using a different timezone than you intend. const date = new Date(); // Number of days in the past. const numDays = 3; return new Date(date.getTime() - numDays * MILLIS_PER_DAY); }