【问题标题】:How do I get list of sheets in a spreadsheet dynamically with google sheets api in React?如何使用 React 中的 google sheet api 动态获取电子表格中的工作表列表?
【发布时间】:2019-11-01 00:58:29
【问题描述】:

有没有办法在下面的谷歌工作表中获取所有工作表的列表?见ranges=${sheet}。下面的代码从一张表中获取数据,但我想获取一张表列表,以便动态调用它们。

const API = `https://sheets.googleapis.com/v4/spreadsheets/${sheetID}/values:batchGet?ranges=${sheet}&majorDimension=ROWS&key=${key}`;

    useEffect(()=>{
        fetch(API).then(response => response.json()).then(data => {
            console.log(data)

            let rows = data.valueRanges[0].values;

          });
    }, []);

【问题讨论】:

    标签: javascript reactjs google-sheets-api


    【解决方案1】:
    • 您希望使用 API 密钥检索电子表格中的工作表名称。
      • 您已经知道电子表格 ID。
    • 电子表格是公开共享的。
    • 您希望使用 Javascript 的 fetch 来实现此目的。

    如果我的理解是正确的,那么这个答案呢?

    修改点:

    • 为了在电子表格中检索工作表名称,使用 Sheets API 中的电子表格.get 方法。

    脚本 1:

    在电子表格中检索工作表名称的示例脚本如下。

    const endpoint = `https://sheets.googleapis.com/v4/spreadsheets/${sheetID}?key=${key}`;
    fetch(endpoint).then(response => response.json()).then(data => {
      const sheetNames = data.sheets.map(sheet => sheet.properties.title);
      console.log(sheetNames)
    });
    

    脚本 2:

    当你的脚本被修改后,下面的修改呢?在此修改后的脚本中,将从电子表格中的所有工作表中检索值。

    const endpoint = `https://sheets.googleapis.com/v4/spreadsheets/${sheetID}?key=${key}`;
    fetch(endpoint).then(response => response.json()).then(data => {
      data.sheets.forEach(s => {
        const sheetName = s.properties.title;
        const API = `https://sheets.googleapis.com/v4/spreadsheets/${sheetID}/values:batchGet?ranges=${sheetName}&majorDimension=ROWS&key=${key}`;
        fetch(API).then(response => response.json()).then(data => {
          console.log(data)
    
          let rows = data.valueRanges[0].values;
        });
      });
    });
    

    脚本 3:

    在此脚本中,仅从电子表格的第一张表中检索值。

    fetch(endpoint).then(response => response.json()).then(data => {
      const sheetName = data.sheets[0].properties.title;
      const API = `https://sheets.googleapis.com/v4/spreadsheets/${sheetID}/values:batchGet?ranges=${sheetName}&majorDimension=ROWS&key=${key}`;
      fetch(API).then(response => response.json()).then(data => {
        console.log(data)
    
        let rows = data.valueRanges[0].values;
      });
    });
    

    注意:

    • 如果您想从电子表格中的特定工作表中检索值,请修改上述脚本。

    参考:

    如果我误解了您的问题并且这不是您想要的方向,我深表歉意。

    【讨论】:

    • @sbaden 感谢您的回复。我很高兴你的问题得到了解决。也谢谢你。
    • 如果我要将以上内容转换为包括授权,您建议我在哪里找到一个简单的示例?我没有发现 API 文档对用户非常友好。它们非常令人困惑。
    • @sbaden 我必须道歉。因为不幸的是,我无法理解你的新问题。那么如何将其发布为新问题?这样,它将帮助用户思考解决方案。我为我糟糕的技能深表歉意。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-09
    • 2015-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多