javascript - 如何从 iframe Google Sheets 访问单元格数据

标签 javascript html iframe google-sheets

我正在尝试从 football website 的图表中提取两个特定数字。 (PF 列、“Team Stats”和“Opp. Stats”行)并将它们作为 JavaScript 变量导入到我的网站,我可以用它进行数学运算等。到目前为止,我的解决方案是使用 Google Sheets 中的 IMPORTHTML 函数,创建一个表格,然后使用“发布到网络”功能将其压缩为一个表格,因为我不想陷入任何太疯狂的事情。 iframe。

我尝试使用 iframe 的对象属性来访问它,包括 getElementbyId 点属性等。

<h1>
        <script>
            var iframe = document.getElementById("data");
            var elmnt = iframe.contentWindow.document;
            //.getElementsByTagName("table")[0];
            document.write(elmnt);

        window.parent.document.getElementById('data')
        </script>
    </h1>

我希望输出正确的数字,但根据我正在尝试的属性,我得到了 [object HTMLDocument] 或未定义

最佳答案

为什么不使用 Sheets API

使用 API,您将使用这个简单的命令:

var result = Sheets.Spreadsheets.Values.get(spreadsheetId, range);
var numRows = result.values ? result.values.length : 0;

但是setup有点重

如果您不想,您仍然可以serialize table data .

这是 John Dyer 的作品:

function tableToJson(table) { 
  var data = []; // first row needs to be headers var headers = []; 
  for (var i=0; i<table.rows[0].cells.length; i++) {
    headers[i] = table.rows[0].cells[i].innerHTML.toLowerCase().replace(/ /gi,''); 
  } 
  // go through cells 
  for (var i=1; i<table.rows.length; i++) { 
    var tableRow = table.rows[i]; var rowData = {}; 
    for (var j=0; j<tableRow.cells.length; j++) { 
      rowData[ headers[j] ] = tableRow.cells[j].innerHTML; 
    } data.push(rowData); 
  } 
  return data; 
}

您可以使用data[column][row]来获取单元格数据;

我认为在这种特定情况下使用 API 是最佳选择。

关于javascript - 如何从 iframe Google Sheets 访问单元格数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57665675/

相关文章:

jquery - 从 iFrame 打开模态窗口到父窗口

javascript - Groovy 相当于 JavaScript isFinite()

javascript - CSS - 在淡入时去模糊图像

javascript - 当文本输入不为空时启用表单提交按钮的最简单方法

javascript - 如何使用 document.getElementById 在 iframe 中选择元素

css - 根据iframe内容扩展div容器宽度

php - 如何获取按钮以在 jQuery 确认对话框上执行操作?

javascript - 将相邻的 <p> 元素包装到 <div> 中

javascript - 如何在HTML页面中创建类似iphone的onclick缩放效果?

javascript - 如何使用 Javascript 键事件重命名选项卡?