Page Summary
-
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.formatStringfor sprintf-like string formatting with different specifiers. -
See how to encode binary data to a text format using
Utilities.base64Encodeand 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 \n d,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 ); }

