首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不和谐机器人读取谷歌页并在表中返回值。我想在没有表格式的消息中返回ar值。

不和谐机器人读取谷歌页并在表中返回值。我想在没有表格式的消息中返回ar值。
EN

Stack Overflow用户
提问于 2021-03-25 14:19:59
回答 1查看 348关注 0票数 3

嗨,我有个机器人,我想修改一下.

它当前在表中显示数据,但我希望它在消息中以CSV的形式显示。

有办法这样做吗?

当前显示的数据如下:

╔═════════════════════╤═════╤═══════╤═══════╗

Val1║名称│Grd││Val║

╟─────────────────────┼─────┼───────┼───────╢

║汤姆鲍勃简蒂姆汤姆││400 K│469 K║

╟─────────────────────┼─────┼───────┼───────╢

║汤姆鲍勃提姆汤姆│b│392K│427 K║

╟─────────────────────┼─────┼───────┼───────╢

║汤姆鲍勃简提姆汤姆│U│392K│455 k║

╟─────────────────────┼─────┼───────┼───────╢

║汤姆鲍勃简提姆汤姆│U│385 K│394 k║

╟─────────────────────┼─────┼───────┼───────╢

║汤姆鲍勃简提姆汤姆│U│366 K│445 k║

╟─────────────────────┼─────┼───────┼───────╢

║汤姆鲍勃简提姆汤姆│U│363 K│397 K║

╟─────────────────────┼─────┼───────┼───────╢

║汤姆鲍勃简蒂姆汤姆││362 k│433 k║

╟─────────────────────┼─────┼───────┼───────╢

║tom bob jan tim tom│a│362 k│400 K║

╟─────────────────────┼─────┼───────┼───────╢

║汤姆鲍勃简提姆汤姆│U│358 K│426 K║

╟─────────────────────┼─────┼───────┼───────╢

║汤姆鲍勃简提姆汤姆│U│356 K│429 K║

╟─────────────────────┼─────┼───────┼───────╢

║汤姆鲍勃简提姆汤姆│U│354 K│409K║

╚═════════════════════╧═════╧═══════╧═══════╝

我想让它像这样显示:

姓名,年级,Value1,Value2

汤姆·鲍勃·扬·蒂姆·汤姆,a,400 K,469 K

汤姆鲍勃简蒂姆汤姆,b,392 K,427 K

汤姆·鲍勃·扬·蒂姆·汤姆,U,392 K,455 K

汤姆·鲍勃·扬·蒂姆·汤姆,U,354 K,409 K

提前感谢

.js代码在下面。

代码语言:javascript
复制
const config = require('../util/globals');
const { table } = require('table');
const { GoogleSpreadsheet } = require('google-spreadsheet');

const doc = new GoogleSpreadsheet(config.SHEET_ID);
doc.useServiceAccountAuth(require('../client-secret.json'));

module.exports = {
  command: 'list',
  aliases: ['le'],
  dm: false,
  permissions: (member) => {
    return true;
  },
  async execute(bot, msg, args) {
    const abbreviations = fs
      .readFileSync('heroes.txt', 'utf-8')
      .split(/\r\n|\n/g)
      .map((row) => row.split(':')[0].toLowerCase());
    if (args.length < 4) {
      return msg.channel.send('Please at least enter 4 names.');
    }
    if (args.slice(0, 5).some((arg) => !abbreviations.includes(arg))) {
      return msg.channel.send('Unrecognised name(s). Please use all lowercase');
    }

    await doc.loadInfo();

    const sheet = doc.sheetsByTitle['Output'];
    await sheet.loadCells();

    sheet.getCellByA1('H3').value = args.slice(0, 5).join(' ');
    await sheet.saveUpdatedCells();

    const sheet2 = doc.sheetsByTitle['OutputI'];

    await sheet2.loadCells();
    const data1 = [
      [
        'Names',
        'Grd',
        'Value1',
        'value2',
      ],
      ...[...Array(15).keys()].slice(9).map((row) => {
        return [...Array(4).keys()].map(
          (column) => sheet2.getCell(row, column).value
        );
      })
    ];

    const data2 = [
      [
        'Names',
        'Grd',
        'Value1',
        'value2',
      ],
      ...[...Array(20).keys()].slice(15).map((row) => {
        return [...Array(4).keys()].map(
          (column) => sheet2.getCell(row, column).value
        );
      })
    ];

    msg.channel.send(
      '```' + table(data1).split('\n').slice(0, -2).join('\n') + '```'
    );
    msg.channel.send(
      '```' + table(data2).split('\n').slice(2).join('\n') + '```'
    );
  }
};
EN

回答 1

Stack Overflow用户

发布于 2021-03-25 15:45:04

我想出来了。有点蠢,甚至问.

代码语言:javascript
复制
msg.channel.send(
  '```' + table(data1).split('\n').slice(0, -2).join('\n') + '```'
);
msg.channel.send(
  '```' + table(data2).split('\n').slice(2).join('\n') + '```'

只需将上面的行更改为:

代码语言:javascript
复制
msg.channel.send(
  (data1)
);
msg.channel.send(
  (data2)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66801441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档