A workaround to use json data with Google Apps script 如何在谷歌Apps Script里面读本地JSON数据

  • fennng 

现在很多API返回的数据都是JSON的格式, 因为他可以很容易的Serialize 转成程序的对象。用谷歌的Apps script 读取JSON的数据不是个问题, 但是有时候我想把JSON数据存在APPs Script本地, 并不想再从Apps Script 里面再发一个请求去拿这个JSON数据。 可惜的是谷歌 APPS script 并不允许新增JSON文件, 也不提供读取本地文件地方法, 除了HTML文件。

但是我发现一个有趣的事, 当我把JSON数据赋给一个变量的时候, 这个JSON数据会被自动的转成Javascript 对象。 如下图,你会发现 JSON.parse(members) 这个字符串的结果和我直接把JSON数据赋值给objMember 的结果是一样的。

这代表一个非常好的消息, 说明我们只要把Json数据原封不动的复制进来就可以使用。 如下图, 你也可以赋一个Array 进来。

function myFunction() {
    var dataAll = JSON.parse(members);
    Logger.log(dataAll);
    var objM = this.objMembers;
    Logger.log(objM);
}

var members='{"testKey": "testValue"}';
var objMembers =[
    {"John Li ": ""},
    {"vero cheng": ""},
];

所以我们可以新建很多gs 文件来存JSON数据, 这里有一个问题, 就是在一个文件里面定义的变量不能在另一个文件里使用, 所以你在新建文件里面定义的变量是没有用的。 但你也绝对不会想把所有的数据放在一起。

但我想到了一个好方法, 虽然变量不是全局的, 但是function 是, 只要在这个文件里再加一个function 来返回这个变量, 就可以了。就像下面这张图里表示的一样。

function getDataChannels(){
    return dataChannels;
}

var dataChannels =
[
    {
        "kind": "youtube#channelListResponse",
        "pageInfo": {
        "totalResults": 1,
        "resultsPerPage": 1
        }
    }
]

然后在另一个文件中, 你可以这样访问你的JSON数据。

好把, 经过再一次试验, 我发现变量是全局的,并不需要用function来返回。 但我懒得改上面的图片了。用function返回感觉更干净(自我安慰)

发表评论

电子邮件地址不会被公开。 必填项已用*标注