【问题标题】:Problem with updating a script for the sheets v4 API version更新工作表 v4 API 版本的脚本时出现问题
【发布时间】:2021-10-05 17:34:32
【问题描述】:

我正在尝试为 Sheets v4 API 版本更新此脚本,但我没有成功...

jQuery(document).ready(function() {
setTimeout(function() {
    jQuery.getJSON(
        //"https://spreadsheets.google.com/feeds/list/1iebtJB4FxhDVztxydXT85SNpgQNhOgJEp_F1qpTSkMI/od6/public/values?alt=json",
        "https://sheets.googleapis.com/v4/spreadsheets/1nt-5-zruTuJPOAfRbCgy9sJA2CCVvzo0sCPEPx0uxEk/values/Section-A/?alt=json&key=AIzaSyCJuQ_bsRn1SVyfI8rkeq0RUnSpecP7IYk",
        function(data) {

            var sheetData = data.feed.entry;

            var i;
            for (i = 0; i < sheetData.length; i++) {

                var perc = data.feed.entry[i]['gsx$changepct']['$t'];
                var cap = data.feed.entry[i]['gsx$marketcap']['$t'];
                var date = data.feed.entry[i]['gsx$tradetime']['$t'];
                var price = data.feed.entry[i]['gsx$price']['$t'];

                document.getElementById('perc').innerHTML += (perc);
                document.getElementById('capitalizzazione').innerHTML += (cap);
                document.getElementById('dataTrade').innerHTML += (date);
                document.getElementById('price').innerHTML += (price);
            }
        });
}, 1000);

})

我可以帮忙吗?

提前致谢!

【问题讨论】:

    标签: javascript google-sheets-api


    【解决方案1】:

    https://spreadsheets.google.com/feeds/list/###/od6/public/values?alt=json 的 URL 用于 Sheets API v3。使用 Sheets API v4 时,需要使用 API 密钥,例如 https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/{range}?key=[YOUR_API_KEY]

    但是,幸运的是,当我看到您的电子表格时,电子表格似乎是作为 Web 发布发布的。我认为在您的情况下,可以在不使用 API 密钥的情况下使用它。在这个答案中,我想提出这种方法。在这种方法中,可以通过查询语言检索值。当你的脚本被修改后,变成如下。

    修改脚本:

    发件人:

    jQuery.getJSON(
        //"https://spreadsheets.google.com/feeds/list/1iebtJB4FxhDVztxydXT85SNpgQNhOgJEp_F1qpTSkMI/od6/public/values?alt=json",
        "https://sheets.googleapis.com/v4/spreadsheets/1nt-5-zruTuJPOAfRbCgy9sJA2CCVvzo0sCPEPx0uxEk/values/Section-A/?alt=json&key=AIzaSyCJuQ_bsRn1SVyfI8rkeq0RUnSpecP7IYk",
        function(data) {
    
            var sheetData = data.feed.entry;
    
            var i;
            for (i = 0; i < sheetData.length; i++) {
    
                var perc = data.feed.entry[i]['gsx$changepct']['$t'];
                var cap = data.feed.entry[i]['gsx$marketcap']['$t'];
                var date = data.feed.entry[i]['gsx$tradetime']['$t'];
                var price = data.feed.entry[i]['gsx$price']['$t'];
    
                document.getElementById('perc').innerHTML += (perc);
                document.getElementById('capitalizzazione').innerHTML += (cap);
                document.getElementById('dataTrade').innerHTML += (date);
                document.getElementById('price').innerHTML += (price);
            }
        });
    

    收件人:

    jQuery.ajax({
      type: "GET",
      url: "https://docs.google.com/spreadsheets/d/1nt-5-zruTuJPOAfRbCgy9sJA2CCVvzo0sCPEPx0uxEk/pub?output=csv"
    }).done(csv => {
      let [header, ...values] = Papa.parse(csv).data;
      values = values.map(r => r.map(c => {
        const t = c.trim().replace(",", ".");
        return isNaN(t) ? t : Number(t);
      }));
      const obj = values.map(r => r.reduce((o, c, j) => Object.assign(o, {[header[j] && header[j].trim()]: c}), {}));
      obj.forEach(data => {
        var perc = data['changepct'];
        var cap = data['marketcap'];
        var date = data['tradetime'];
        var price = data['price'];
        document.getElementById('perc').innerHTML += (perc);
        document.getElementById('capitalizzazione').innerHTML += (cap);
        document.getElementById('dataTrade').innerHTML += (date);
        document.getElementById('price').innerHTML += (price);
      });
    });
    
    • 在本次修改中,请加载&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.1.0/papaparse.min.js"&gt;&lt;/script&gt;,用于将CSV数据解析为数组。
    • 我认为https://docs.google.com/spreadsheets/d/1nt-5-zruTuJPOAfRbCgy9sJA2CCVvzo0sCPEPx0uxEk/pub?output=csv的URL也可以代替https://docs.google.com/spreadsheets/d/1nt-5-zruTuJPOAfRbCgy9sJA2CCVvzo0sCPEPx0uxEk/pub?output=csv

    参考资料:

    【讨论】:

    • 谢谢你,真的很亲切!超级有效的解决方案!
    • @Luke 欢迎。谢谢你让我知道。我很高兴你的问题得到了解决。如果您的问题得到解决,请按接受按钮。与您有相同问题的其他人也可以将您的问题作为可以解决的问题。我认为您的问题和解决方案将对他们有用。如果找不到按钮,请随时告诉我。 stackoverflow.com/help/accepted-answer
    猜你喜欢
    • 1970-01-01
    • 2018-04-09
    • 2023-02-06
    • 1970-01-01
    • 1970-01-01
    • 2021-06-04
    • 2023-02-02
    • 2014-04-30
    相关资源
    最近更新 更多