我在glitch.com上托管了一个Discord机器人,其目的是为用户存储,读取和更新一些基本统计信息。由于此设置会导致每次项目进入睡眠状态时都会重置变量,因此我成功设置了Google Sheets API,以便可以将用户的统计信息永久存储在其他位置。但是,对于上帝的爱,我无法弄清楚如何真正使我的JavaScript变量从电子表格中获取其值。
我的初始代码只是有很多变量,用于存储每个成员的各种统计信息,例如:
var User1Gold = 0
var User2Gold = 0
等等。对于像我这样的初学者来说,这很容易工作,但是现在我发现自己要一遍又一遍地阅读文档(我怀疑我要寻找的答案在这里),却一无所获。有没有办法让我的变量等于某个电子表格中的某个单元格并完成它,还是没有那么容易?也许是这样的:
var User1Gold = {spreadsheetId: 'iD', range: 'B3',};
好的!我前进了!我能够使我的机器人访问电子表格以查找特定值,然后使用该值发送消息。只是我想要的,除了似乎只能执行一次?这是API附带的示例代码,我对其进行了调整,以使变量等于电子表格中的一个单元格。
var myvariable
function getvalue(auth) {
const sheets = google.sheets({version: 'v4', auth});
sheets.spreadsheets.values.get({
spreadsheetId: 'SpreadsheetId',
range: 'Sheet1!B3',
}, (err, res) => {
if (err) return console.log('The API returned an error: ' + err);
const rows = res.data.values;
if (rows.length) {
rows.map((row) => {
myvariable = (`${row[0]}`);
});
} else {
console.log('No data found.');
}
});
}
这可以按预期工作,但是我显然想引用电子表格中的多个值(用户健康点,硬币等)。但是,当我第二次复制粘贴上面的代码,给变量和函数起另一个名字时,它根本不起作用。我收到错误消息:
(节点:2930)UnhandledPromiseRejectionWarning:DiscordAPIError:缺少权限
我究竟做错了什么?为什么我的第一个功能似乎具有权限,但是我的第二个相同的功能却没有权限?有比为每个要获取的值声明一个函数更简单的方法吗?
我能够解决该错误(不诚实),但是我的问题仍然存在。我无法使用第二个函数来从电子表格中检索第二个值并将其分配给第二个变量。我在控制台中没有收到任何错误,但程序只是没有执行任何操作,而第一个功能(示例中的功能)就可以了。
好的,我设法解决了这个问题,所以如果有人遇到同样的问题,我就把它留在这里。为了使其正常工作,我只需要调用原始函数(返回一个数组)中所需的所有值,然后将所需的每个变量设置为数组中的特定值即可。
var myvar1
var myvar2
function getvalue(auth) {
const sheets = google.sheets({version: 'v4', auth});
sheets.spreadsheets.values.get({
spreadsheetId: 'SpreadsheetId';
range: 'Copa!B2:B3',
},(err, res) => {
if (err) return console.log('The API returned an error: ' + err);
myvar1 = res.data.values[0];
myvar2 = res.data.values[1];
});
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句