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
留言