【问题标题】:Get a cell value from a public Google spreadsheet using v 4 API使用 v 4 API 从公共 Google 电子表格中获取单元格值
【发布时间】:2020-06-14 14:46:45
【问题描述】:

我将其用作示例 - https://docs.google.com/spreadsheets/d/1hbHqrnYa4oMUquZcq8WkTJk0kI0t9scGBwro-EH-ALA/edit#gid=0

如何使用 API v4 获取单元格值,例如 A2 表格?

function myCallback(spreadsheetdata)
{
    console.log(spreadsheetdata);
    // spreadsheetdata.A2 
}
<script src="https://spreadsheets.google.com/feeds/cells/1hbHqrnYa4oMUquZcq8WkTJk0kI0t9scGBwro-EH-ALA/od6/public/values?alt=json-in-script&callback=myCallback"></script>

【问题讨论】:

    标签: javascript google-sheets-api


    【解决方案1】:

    我相信你的目标如下。

    • 您想使用 JavaScript 从https://docs.google.com/spreadsheets/d/1hbHqrnYa4oMUquZcq8WkTJk0kI0t9scGBwro-EH-ALA/edit#gid=0 的 Google 电子表格中检索单元格“A2”的值。

    对于这个,这个答案怎么样?

    当电子表格未公开共享且未发布到 Web 时,需要使用由 OAuth2 检索到的访问令牌和/或服务帐户。在这种情况下,脚本变得有点复杂。但是当我看到您的电子表格时,电子表格似乎是公开共享并发布到网络上的。在这种情况下,可以在没有访问令牌的情况下检索该值。所以脚本变得更简单了。

    模式一:

    在此模式中,单元格“A2”的值是在未经授权的情况下检索的。

    示例脚本:

    const url = "https://docs.google.com/spreadsheet/pub?key=1hbHqrnYa4oMUquZcq8WkTJk0kI0t9scGBwro-EH-ALA&range=A2&output=csv";
    fetch(url)
    .then(response => response.text())
    .then(text => {
      console.log(text)
    });
    

    const url = "https://docs.google.com/spreadsheet/pub?key=1hbHqrnYa4oMUquZcq8WkTJk0kI0t9scGBwro-EH-ALA&output=csv";
    fetch(url)
    .then(response => response.text())
    .then(text => {
      const ar = text.split("\n").map(r => r.split(","));
      console.log(ar[2][0]);
    });
    
    • 当您的电子表格使用上述脚本时,将返回单元格“A2”的a

    模式 2:

    在此模式中,单元格“A2”的值是使用 Sheets API 中的电子表格.values.get 方法和 API 密钥检索的。在这种情况下,请检索您的 API 密钥,并将其设置为 apiKey

    示例脚本:

    <script async defer src="https://apis.google.com/js/api.js" onload="handleClientLoad()"></script>
    <script>
    function handleClientLoad() {
      const apiKey = "###";  // Please set your API key.
    
      gapi.load('client', () => {
        gapi.client.setApiKey(apiKey);
        gapi.client.load('sheets', 'v4', () => {
          gapi.client.sheets.spreadsheets.values.get({
            spreadsheetId: "1hbHqrnYa4oMUquZcq8WkTJk0kI0t9scGBwro-EH-ALA",
            range: 'Sheet1!A2',
          }).then(res => {
            const value = res.result.values[0][0];
            console.log(value);
          });
        });
      });
    }
    </script>
    
    • 当上述脚本用于您的电子表格时,将返回单元格“A2”的a

    参考资料:

    【讨论】:

    • 感谢您的回复。我想读取工作表的所有值并使用 JavaScript 在 HTML 页面上以不同的方式显示它们。那么如果我想读取值怎么办:for i = 1 to 6; for j = A to D; document.write(cell[j][i])
    • @PlanBuildr 感谢您回复并添加更多信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-13
    相关资源
    最近更新 更多