Apps Script中如何轉換BASE64編碼

我很久之前曾分享BASH如何轉換BASE64編碼,從bin或文字檔轉過去BASE64亦或是在轉換回來。因為最近在整理Apps Script與還技術債,所以就也來整理一下Apps Script上使用BASE64的方式。

 Apps Script首先要先釐清,你究竟是要用在(1)網頁端,還是在(2)伺服器端

網頁端

如果是網頁上生成BASE64,你可以用btoa()和atob()這組函數。

以下示範:

var str = 'your plain text'
var base64 = btoa(str)
var decode = atob(base64)
console.log('origin:', str) // output: your plain text
console.log('base64:', base64) // output: eW91ciBwbGFpbiB0ZXh0
console.log('decode:', decode) // output: your plain text

不過這組函數的問題在於無法處理所有的字元,因為他們原本是用來處理Latin1的字元。


Apps Script伺服器端

你會使用到Utilities和Blob

以下示範:
var str = 'your plain text'
var base64 = Utilities.base64Encode(str, Utilities.Charset.UTF_8)
var decode = Utilities.base64Decode(base64, Utilities.Charset.UTF_8) // Array
var recon = Utilities.newBlob(decode).getDataAsString()
console.log('origin:', str) // output: your plain text
console.log('base64:', base64) // output: eW91ciBwbGFpbiB0ZXh0
console.log('recon:', recon) // output: your plain text


官方文件有說明如何轉換:
  • https://developers.google.com/apps-script/reference/utilities/utilities

補充:Node.js裡頭使用


使用Buffer的from跟toString,兩者預設處理UTF-8編碼。另外,Buffer還能做base64或hex的處理。

fs.readFileSync(filePath).toString('base64')

var str = 'your plain text'
var base64 = Buffer.from(str).toString('base64')
var decode = Buffer.from(base64, 'base64').toString()
console.log('origin:', str) // output: your plain text
console.log('base64:', base64) // output: eW91ciBwbGFpbiB0ZXh0
console.log('decode:', decode) // output: your plain text

留言