获取Discord Bot以通过Google Sheets API使用JavaScript阅读和更新电子表格

娜迪娜·卡迪洛(Nadina Cardillo)

我在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:缺少权限

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

编辑2

我能够解决该错误(不诚实),但是我的问题仍然存在。我无法使用第二个函数来从电子表格中检索第二个值并将其分配给第二个变量。我在控制台中没有收到任何错误,但程序只是没有执行任何操作,而第一个功能(示例中的功能)就可以了。

娜迪娜·卡迪洛(Nadina Cardillo)

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

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用 Google Sheets API 和 Python 更新电子表格属性?

使用Google Sheets API公开电子表格?

使用Sheets API v4获取与Google帐户关联的所有电子表格的列表

如何在React中使用Google Sheets API动态获取电子表格中的工作表列表?

Google Sheets API,为C#中的用户获取电子表格

如何使用Google Sheets API v4从Google表格中的电子表格集合中获取一张表格?

在 Google Sheets API 中应用过滤器后如何获取电子表格的范围?

使用Google Sheets API V4 API密钥创建电子表格

无法使用Google Sheets API创建新的电子表格

从现有的Google电子表格,附加行和更新中获取响应

使用 Google Apps 脚本和 JavaScript 根据电子表格中的多列获取唯一值

Google App Script - 使用 fetch 循环获取 API 响应并写入电子表格

在 Google Sheets 电子表格中,如何在内存 TRANSPOSE 上使用 QUERY?

Google Sheets API:创建电子表格或将电子表格移动到文件夹中

阅读Google电子表格时获取单元格位置

如何使用Google Sheets API v4通过PHP在电子表格中创建新工作表或标签

如何使用 onEdit(e) 函数为 Google 电子表格中的多个子表获取日期和时间

使用v 4 API从公开的Google电子表格获取单元格值

如何使用特定列中的值对行进行分组,然后使用Google Sheets API将其导出到相应的新电子表格

使用Google Sheets V4克隆Google电子表格,并允许队友访问

如何仅获取Google电子表格的前四行,该Google电子表格在GAE中包含超过8万行和7列以上(使用Java)

从Google电子表格获取值

获取行号和列号Google电子表格-App脚本

无法从Google电子表格上的API获取数据

从Google电子表格PHP API的多个工作表中获取行

加速电子表格的脚本(GAS - Google App Script & Google Sheets)

如何在Python中通过Google Sheets API v4调用电子表格中的特定工作表

在 Google Sheets 电子表格中合并多个工作表(动态)

使用 Google 电子表格公式动态获取经过的分钟数