繁体   English   中英

如何将 Google 表格数据导入为可用的 json 值?

[英]How do I import Google sheets data as a usable json value?

如何将谷歌表格中的数据导入可用的 JSON 数据? 我不想只是 console.log 它或将其作为 div 元素插入。

我希望能够将从 get 请求收到的 csv 文件分配给一个变量,并将其转换为 JSON 字典。

function loadData() {
  var url="https://docs.google.com/spreadsheets/d/e/2PACX-1vQ3CoW5ktyMAa8YTdQc5hrh_z7jqCURxa3kqxjZTuLGZ-067Un7uryjv1F6Yt7AXHQrz7KUJf7ZRRWl/pub?output=csv";
  xmlhttp=new XMLHttpRequest();
  xmlhttp.onreadystatechange = function() {
    if(xmlhttp.readyState == 4 && xmlhttp.status==200){
      console.log(xmlhttp.response);
      return xmlhttp.response;
    }
  };
  xmlhttp.open("GET",url,true);
  xmlhttp.send(null);
}

const csv = loadData()
console.log(loadData())

目前,数据记录在控制台上,但我不确定如何将其转换为可用数据。

在您的情况下,如何进行以下修改?

修改后的脚本:

function loadData() {
  return new Promise((resolve, reject) => {
    var url = "https://docs.google.com/spreadsheets/d/e/2PACX-1vQ3CoW5ktyMAa8YTdQc5hrh_z7jqCURxa3kqxjZTuLGZ-067Un7uryjv1F6Yt7AXHQrz7KUJf7ZRRWl/pub?output=csv";
    xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function () {
      if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        resolve(xmlhttp.response);
      } else if (xmlhttp.readyState == 4 && xmlhttp.status != 200) {
        reject(xmlhttp.responseText);
      }
    };
    xmlhttp.open("GET", url, true);
    xmlhttp.send(null);
    xmlhttp.onerror = function () {
      reject(xmlhttp.responseText);
    }
  });
}

async function sample() {
  // Retrieve CSV data.
  const csv = await loadData().catch(err => console.log(err));
  if (!csv) return;
  console.log(csv);

  // Convert CSV to JSON data.
  const [header, ...values] = csv.split("\n").map(r => r.split(","));
  const json = values.map(r => r.reduce((o, c, j) => {
    const v = c.trim();
    o[header[j]] = isNaN(v) ? v : Number(v);
    return o;
  }, {}));
  console.log(json)
}

sample();
  • 运行此脚本时,您可以在console.log(csv)的日志中看到检索到的 CSV 数据。 此外,您可以在console.log(json)的日志中看到转换后的 JSON 值。
    • 关于 JSON 数据,不幸的是,我无法找到您在评论中提到的预期值。 所以,我通过猜测你的目标来准备它。 如果这不是您的预期值,请提供您的预期值。 通过这个,我想修改它。

暂无
暂无

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

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