gpt4 book ai didi

javascript - 从 Google 脚本检索数据

转载 作者:行者123 更新时间:2023-12-02 21:56:39 25 4
gpt4 key购买 nike

我编写了一个自定义 Google 脚本,它为我输出一个对象,我希望能够调用它并将其分配给一个变量,然后使用该变量在网站上显示数据。

目前,我已经想出使用另一个 Google Scripts 项目来访问数据,但是我找不到使用计算机或 DreamHost 服务器上的 JS 文件之类的方法来访问数据。

这是我尝试过的:

var infected_data = getData();

function getData() {
var URL = 'https://script.google.com/macros/s/AKfycbzsyQNJwDvQc5SvNGEDZZOoNI3XxNar9PA9sRucZx7mgzfWpFQ/exec';

var response = UrlFetchApp.fetch(URL);

return response;
}

在像 playcode.io 这样的东西上,它给了我以下错误:

error: Uncaught ReferenceError: UrlFetchApp is not defined

我得到了同样的结果,只需将它放在我的计算机上并使用 Chrome 运行它即可:

enter image description here

看来 UrlFetchApp 仅适用于 Google 脚本。是否有其他方法可以访问 Google 环境之外的输出。

*我不知道授权和所有内容如何适合这里(因为 Google 脚本似乎以我的用户身份运行它。对吧?)

HTML header :

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
<title>JQVMap - World Map</title>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<link href="../dist/jqvmap.css" media="screen" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
<script type="text/javascript" src="../dist/jquery.vmap.js"></script>
<script type="text/javascript" src="../dist/maps/jquery.vmap.world.js" charset="utf-8"></script>
<script type="text/javascript" src="js/jquery.vmap.sampledata.deaths.js"></script>
<script type="text/javascript" src="js/jquery.vmap.sampledata.infected.js"></script>
<script>
jQuery(document).ready(function () {
jQuery('#vmap').vectorMap({
map: 'world_en',
backgroundColor: '#333333',
color: '#ffffff',
hoverOpacity: 0.8,
selectedColor: '#3498DB',
enableZoom: true,
showTooltip: true,
scaleColors: ['#F3A291', '#FF4F3B'],
values: infected_data,
normalizeFunction: 'polynomial',
onLabelShow: function (event, label, code) {
label.html('<div class="map-tooltip"><h1 class="header"> ' + label.html() + '</h1><p class="description">Infected: ' + infected_data[code] + '</p><p class="description">Deaths: ' + death_data[code] + '</p></div>');
}
});
});
</script>
</head>

Google 脚本文件:

function doGet() {
var result = {};
var infected = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Data').getDataRange().getValues();
var death = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Data').getDataRange().getValues();
result = makeObject(infected);

return ContentService.createTextOutput(JSON.stringify(result)).setMimeType(ContentService.MimeType.JSON);
}

function makeObject(multiArr) {
var obj = {};
var countrystats = {};
var headers = multiArr.shift();

for (var i = 0; i < headers.length; i++) {
countrystats[i] = multiArr.map(function (app) {
return app[i];
})
}

for (var m = 0; m < countrystats[1].length; m++) {
obj[countrystats[1][m]] = 0;
}

for (var j = 0; j < countrystats[1].length; j++) {
var TempVar;
TempVar = obj[countrystats[1][j]];
obj[countrystats[1][j]] = TempVar + countrystats[3][j];

}

return obj;
}

Google 脚本输出(使用 JSON View chrome 扩展):

{
cn: 8134,
th: 23,
mo: 7,
us: 5,
jp: 11,
kr: 4,
sg: 10,
vn: 2,
fr: 5,
np: 1,
my: 8,
ca: 3,
ci: 1,
lk: 1,
au: 9,
de: 4,
fn: 1
}

这是一个公共(public)链接,其中包含我想要的对象/数据(与上面显示的对象相同):网络应用程序:https://script.google.com/macros/s/AKfycbzsyQNJwDvQc5SvNGEDZZOoNI3XxNar9PA9sRucZx7mgzfWpFQ/exec

所以基本上任何使用它的人都应该能够访问它。我只需要一种方法将该数据分配给本地 JS 变量。谷歌表格脚本作为网络应用程序发布。如果我没记错的话,有一个设置允许任何人,甚至匿名者访问它。

这是我对 AJAX 请求的尝试: var url =“https://script.google.com/macros/s/AKfycbzsyQNJwDvQc5SvNGEDZZOoNI3XxNar9PA9sRucZx7mgzfWpFQ/exec”;

  var infected_data = jQuery.ajax({
crossDomain: true,
url: url,
method: "GET",
//dataType: "jsonp"
});

如果我取消注释 jsonp,则会收到错误:

jquery-1.11.3.min.js:5 Cross-Origin Read Blocking (CORB) blocked cross-origin response https://script.googleusercontent.com/macros/echo?user_content_key=JXkCjiJjhcjndRREjoGyVNkZNkD-HvKpEPkpicQBm9nR9OkxjGXdYuOPsLxbJf-B9Rgifl5NWMtzgjfVGuMdGxTJrjKnRpdcOJmA1Yb3SEsKFZqtv3DaNYcMrmhZHmUMWojr9NvTBuBLhyHCd5hHazTNYZyoqG0ZuVXpWSNdoeLErB4AfUCNPKJHgELe5WaAmN5SlwIhonlWkkbFzR8kUwjKrMtdq9u-YqreD7W_KJ_aVqKVBTehAuogPCoZCfVc4yJf5ieDCdMDbXQ8FZZq8iSedsk1Px1LnPBLM8W-ZRcknnbJNT8dS525XG1pNEBR&lib=Mw_Scq3iKhByBS86NJpd_CngcdEShCw7K with MIME type application/json. See https://www.chromestatus.com/feature/5629709824032768 for more details.

如果删除它,我不会收到任何错误。但是,我仍然看不到交互式 map (我的应用程序)上的数据。

最佳答案

如果您尝试从 Google Apps 脚本外部(例如您自己的网站/服务器上)的 Google 电子表格获取数据,则需要使用 Sheets API .

这里有一篇关于如何使用 JavaScript 进行 Google API 调用的好文章:https://medium.com/google-cloud/gapi-the-google-apis-client-library-for-browser-javascript-5896b12dbbd5 .

关于javascript - 从 Google 脚本检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59991376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com