0

我在 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.');
    }
  });
} 

这按预期工作,但我显然想从我的电子表格中引用多个值(用户健康点、硬币等)。但是当我第二次复制粘贴上面的内容,给变量和函数取另一个名字时,它就不起作用了。我收到错误消息:

(node:2930) UnhandledPromiseRejectionWarning: DiscordAPIError: Missing Permissions

我究竟做错了什么?为什么我的第一个功能似乎有权限,但我的第二个功能相同却没有?有没有比为我想要获得的每个值声明一个函数更简单的方法?

编辑 2

我能够修复错误(不知道如何诚实),但我的问题仍然存在。我无法创建第二个函数来从我的电子表格中检索第二个值并将其分配给第二个变量。我在控制台中没有错误,但程序根本不这样做,而第一个函数(示例中的那个)工作得很好。

4

1 回答 1

2

好的,我设法解决了它,所以我把它留在这里,以防其他人有同样的问题。为了使它工作,我只需要在原始函数(返回一个数组)中调用我需要的所有值,然后将我想要的每个变量设置为数组中的特定值。

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];
        });
    }
于 2018-12-25T21:25:08.820 回答