#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
}