如何从 google 脚本 url return json

How to return json from google script url

我想在下一行timeline_json中得到json值

          window.timeline = new VCO.Timeline('timeline-embed', new VCO.TimelineConfig(timeline_json));

上面一行在document.ready

为了得到timeline_json,我写了一个函数。我正在按照我的代码的确切顺序粘贴代码。

function get_json(){
  $.getJSON("https://script.google.com/macros/s/FILE_ID/exec", function(data) {
  console.log(data);  
  return data;
 });
}

 var timeline_json=get_json();
 console.log(timeline_json)


 window.timeline = new VCO.Timeline('timeline-embed', new VCO.TimelineConfig(timeline_json));

在控制台中,我按此顺序获取对象

undefined
timeline.js:2950 Uncaught Invalid 
index.html:78 Object {title: Object, events: Array[18]}

如果我先得到对象,那么它就可以工作。

ajax 请求默认是异步的(而且应该始终如此)。您不能 return 来自 ajax 请求回调的任何值。您可以做的是 return 从您的方法中获取承诺(ajax 请求),然后使用相关的延迟方法,例如 done():

function get_json() {
    return $.getJSON("https://script.google.com/macros/s/FILE_ID/exec");
}

get_json().done(function (data) {
    window.timeline = new VCO.Timeline('timeline-embed', new VCO.TimelineConfig(data));
});