繁体   English   中英

如何使用 node.js 将 google-spreadsheet 中的信息排序到数组中

[英]How would I sort information from google-spreadsheet into an array using node.js

我最近一直在尝试将我的一些数据库转换为谷歌表格,因此用户可以使用谷歌表单提交内容,它会自动放入表格中,然后我可以使用 npm package 谷歌电子表格提取数据。 但我希望能够将这些数据放在一个数组中,以便在我的 node.js 应用程序中使用。

下面的代码基本上只是简单地从文档中获取信息并为我预先显示所有信息(至少我想要的列/行)

    function factdoc(fact) {
        msg.channel.send(`Fact: ${fact.facts}`);
        msg.channel.send(`------------------------`);
    }

    async function accessSpreadsheet() {
        const doc = new GoogleSpreadsheet('1QdEn0w02w-qcxHl5dLRn5Ld0IolbgFM9IV2TY2TPTSQ');
        await promisify(doc.useServiceAccountAuth)(creds);
        const info = await promisify(doc.getInfo)();
        const sheet = info.worksheets[0];

        const rows = await promisify(sheet.getRows)({
            offset: 1
        });
        rows.forEach(row => {
            factdoc(row);
        })
    }


    if (msg.content == prefix + 'test') {
        accessSpreadsheet();
        msg.delete();
    }

output 是这样出来的

在此处输入图像描述

谷歌表看起来像这样

在此处输入图像描述

所以它可以很好地阅读谷歌表。 但是,在阅读了文档并观看了一些教程之后,我不确定如何进一步了解它。

我想获取该信息并将其存储为一个数组,这样如果我要输入msg.channel.send(fact[0]); 例如,它将显示test0 或者如果我要做一个随机的事实,我可以做这样的事情(显然不完全像这样)

if (msg.content == prefix + "randomfact"){
randomfact = Math.floor(Math.random() * sheet.rowCount);
msg.channel.send(fact[randomfact]);
}

然后它会计算行数,从而允许我将其放入math.random并允许我从列表中打印一个随机事实。 我已经搞砸了几个小时并不断破坏我的代码。 我不确定如何实现文档中的功能,因为我以前从未使用过此功能。

我让它工作了,你需要做的就是删除 for each,创建一个新变量并将factdoc function 解析为行内容

    function factdoc(fact) {
        msg.channel.send(`Fact: ${fact.facts}`);
        msg.channel.send(`------------------------`);
    }

    async function accessSpreadsheet() {
        const doc = new GoogleSpreadsheet('1QdEn0w02w-qcxHl5dLRn5Ld0IolbgFM9IV2TY2TPTSQ');
        await promisify(doc.useServiceAccountAuth)(creds);
        const info = await promisify(doc.getInfo)();
        const sheet = info.worksheets[0];

        const rows = await promisify(sheet.getRows)({
            offset: 1
        });
        row = factdoc(rows[arrayno#]); //new code
    }


    if (msg.content == prefix + 'test') {
        accessSpreadsheet();
        msg.delete();
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM