dus*_*der 8 google-apps-script
我正在 Google Drive 电子表格的脚本中从 JIRA 获取 JSON 数据。我有一个脚本可以很好地进行提取,而且我几乎只为该问题提取数据。我得到的是 JSON 文本字段,表示有关该特定 JIRA 问题的所有数据。
不是每次我想要来自特定 JIRA 问题的字段时都调用 UrlFetch 服务,而是想在第一次获取后缓存获取的 JSON 数据。
不幸的是,Google 的 Google Apps 脚本缓存服务只会缓存字符串格式的数据,并将字符串限制为 200 个字符。JIRA 返回的 JSON 文本数据远远超过 200 个字符。
是否有其他方法可以缓存 javascript 对象(如解析的 JSON 字符串)或在 Google Apps 脚本中缓存 200 多个字符的方法?
这是我在意识到数据存储为字符串之前尝试缓存数据的代码:
function _fetchJiraData(targetIssue) {
Logger.log("Started fetching JIRA data for '%s'", targetIssue);
var data = cache.get(targetIssue);
if (data == null) {
var options = {
headers : {
Authorization : "Basic " + Utilities.base64Encode('user:password')
}
};
var url = Utilities.formatString(
'https://rentrak.atlassian.net/rest/api/latest/issue/%s',
targetIssue
);
var result = UrlFetchApp.fetch(url, options);
var jsonText = result.getContentText();
data = JSON.parse(jsonText);
cache.put(targetIssue, data);
}
// TODO: validate data
return data;
};
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
Apps Script Cache Service最多可为每个键缓存100KB,您应该不会遇到只有“200”个字符的问题。更严格的限制仅适用于 250 个字符的密钥。
我在您的代码中看到的主要问题是您正在尝试缓存解析的数据,而不是文本。除非你的键那么大(在这种情况下,我建议你使用 enconding 代替),这应该有效:
function _fetchJiraData(targetIssue) {
var jsonText = cache.get(targetIssue);
if (jsonText === null) {
//...prepare your fetch
var result = UrlFetchApp.fetch(url, options);
jsonText = result.getContentText();
cache.put(targetIssue, jsonText);
}
var data = JSON.parse(jsonText);
return data;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6721 次 |
| 最近记录: |