#javascript #node.js #google-sheets-api
#javascript #node.js #google-sheets-api
Вопрос:
Я работаю с электронной таблицей в Node.js использование google-spreadsheet-api. Я пытаюсь обновить значения в электронной таблице после обновления их в коде с .save()
помощью, как указано в документации, но я получаю эту ошибку:
UnhandledPromiseRejectionWarning: TypeError: data[i][5].save is not a function
Вот код, который я использую. Я удалил посторонний код, касающийся инициализации документа и всего такого:
await doc.loadInfo();
sheet = doc.sheetsByIndex[0];
data = await sheet.getRows().then((q) => {
return q.map((v) => v._rawData);
});
console.log(data)
voterID = message.author.id //discord.js, gets id of the person triggering this function
for (i = 0; i < data.length; i ) { //go through every row of voting candidate
if (data[i][5].includes(voterID)) { //if user already their ID "signature" voted on something else
data[i][5].replace(`${voterID}, `, "") // remove it
}
data[earned - 1] = `${voterID}, ` //add their signature to the voting candidate they specified
await data[i][5].save();
await data[earned - 1].save();
}
}
Не знаю, что я здесь делаю не так.
Редактировать: Забыл упомянуть, что я пытался обновить пакет, ничего не изменилось.
Комментарии:
1. Могу я спросить, откуда вы берете документацию? Я спрашиваю, потому что упомянутый вами пакет npm не является официальным пакетом Google Sheet и может неправильно соответствовать документации.
npm install googleapis@39 --save
является ли официальная команда установки пакета2. вот официальный node.js быстрый старт
4. Не знаком с этой библиотекой, но из документов, на которые вы ссылались, похоже, что каждый раз
save
, когда вызывается что-то в этом форматеrow[i].save()
. Тем не менее, вы вызываетеdata[i][j].save()
. Может быть, попробуйте не сохранять таким детализированным способом и просто сохранитьdata[i].save()
. Или даже просто используйте то, что выглядит как метод сохранения всехsheet.saveUpdatedCells(); // save all updates in one call
— поскольку под «сохранить», я полагаю, подразумевается «отправить запрос», и, как правило, лучше отправлять меньше запросов.