如何在谷歌应用程序脚本中使用Node js(缓冲区)



我想在谷歌应用程序脚本中执行这个节点js行。我如何在谷歌应用程序脚本中使用这一行:

const payload = new Buffer(JSON.stringify(obj)).toString('base64');

当我运行它时,我得到了这个错误:

ReferenceError: Buffer is not defined

我相信你的目标如下。

  • 您想要将Node.js中的const payload = new Buffer(JSON.stringify(obj)).toString('base64');转换为Google Apps脚本

不幸的是,在当前阶段,new Buffer()Buffer.from()不能与Google Apps脚本一起使用。所以在这种情况下,我认为Utilities.base64Encode可以用于您的情况。示例脚本如下。

示例脚本:

const obj = {key: "value"};
const payload = Utilities.base64Encode(JSON.stringify(obj));
console.log(payload)  // eyJrZXkiOiJ2YWx1ZSJ9

结果:

当运行上述脚本时,将检索eyJrZXkiOiJ2YWx1ZSJ9。在这种情况下,我可以通过下面的Node.js脚本确认结果值是相同的。

const obj = {key: "value"};
const payload = new Buffer(JSON.stringify(obj)).toString('base64');
// or const payload = Buffer.from(JSON.stringify(obj)).toString('base64');
console.log(payload)  // eyJrZXkiOiJ2YWx1ZSJ9

参考:

  • base64编码(数据(

缓冲区用于nodeJS

客户端JavaScript中的等效项是数组缓冲区

为了从字符串中生成一个uint8array或Uint16Array,您必须从一个具有字符串长度的新数组缓冲区对象中生成uint8aarray或Uint16 array,然后在数组中循环,并在索引处添加字符串中的字符代码值,然后返回缓冲区

一种功能

function Buffer(str) {
var buf= new ArrayBuffer(str.length/*multiply by 2 for higher chars*/)
var ar = new Uint8Array(buf) //use Uint16Array etc for larger, i=0
for(i=0;i< ar.length;i++) ar[i] = str.charCodeAt(I)
return buf
}

最新更新