Как использовать node js (буфер) в Google apps script

#javascript #node.js #google-apps-script #google-sheets #scripting

#javascript #node.js #google-apps-script #google-sheets #создание сценариев

Вопрос:

Я хочу выполнить эту строку node js в скрипте Google apps. Как мне использовать эту строку в скрипте Google apps:

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

Когда я запускаю его, я получаю эту ошибку:

 ReferenceError: Buffer is not defined
  

Комментарии:

1. Зачем вам нужно использовать Buffer ?

Ответ №1:

Я полагаю, что ваша цель заключается в следующем.

  • Вы хотите преобразовать const payload = new Buffer(JSON.stringify(obj)).toString('base64'); в Node.js в Google Apps Script.

К сожалению, на текущем этапе new Buffer() и Buffer.from() не могут использоваться с Google Apps Script. Итак, в данном случае, я думаю, это 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
  

Ссылка:

Ответ №2:

Буфер используется в NodeJS

Эквивалентом в JavaScript на стороне клиента является буфер массива

Чтобы создать его из строки, вы должны создать uint8array или Uint16Array из нового объекта array buffer с длиной строки, затем выполнить цикл по массиву и добавить значения кода символа из строки в индекс и вернуть буфер

Функция

 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
}