我正在尝试开发一个表单放弃热映射器
function newMarkup(id, uniqueHits){
var min = Math.min.apply(null,uniqueHits);
var max = Math.max.apply(null,uniqueHits);
var med = max / 2;
for(var num = 0; num < id.length; num++){
styleElement(id[num], uniqueHits[num], min, max, med);
}}
function styleElement(element, value, min, max, med){
var el = $("[id$=" + element + "]");
if(el.prop('nodeName') === "INPUT"){
if(value == max){
el.addClass('very-good');
}
if(value < max && value > med){
el.addClass('good');
}
if(value == med){
el.addClass('average');
}
if(value < med && value > min){
el.addClass('not-so-good');
}
if(value == min){
el.addClass('poor');
}
} else {
el = el.next();
if(value == max){
el.addClass('very-good');
}
if(value < max && value > med){
el.addClass('good');
}
if(value == med){
el.addClass('average');
}
if(value < med && value > min){
el.addClass('not-so-good');
}
if(value == min){
el.addClass('poor');
}
}
}
我想知道是否可以通过chrome扩展程序调用api?
基本上我正在尝试执行此调用以获取数据:
gapi.client.analytics.data.ga.get({
'ids': 'ga:' + profileId,
'start-date': '7daysAgo',
'end-date': 'today',
'metrics': 'ga:uniqueEvents',
'dimensions': 'ga:eventLabel',
'sort':'-ga:uniqueEvents',
'filters': "ga:eventCategory==Form Field Tracking - /join"
})
我尝试通过在MVC Web应用程序中使用iFrame来创建我的热图,但由于尝试跨域发送数据的麻烦,我放弃了。
我想知道是否可以从chrome扩展程序中获取分析API的数据?我想它必须以与谷歌脚本如何使用分析API(使用服务帐户)类似的方式完成,但我无法找到任何文档或查明是否可能。 (脚本中的代码示例)
function runReport(profileId) {
var today = new Date();
var oneWeekAgo = new Date(today.getTime() - 7 * 24 * 60 * 60 * 1000);
var startDate = Utilities.formatDate(oneWeekAgo, Session.getTimeZone(), 'yyyy-MM-dd');
var endDate = Utilities.formatDate(today, Session.getTimeZone(), 'yyyy-MM-dd');
var tableId = 'ga:' + profileId;
var metric = 'ga:uniqueEvents';
var options = {
'dimensions': 'ga:eventLabel',
'sort':'-ga:uniqueEvents',
'filters': "ga:eventCategory==Form Field Tracking - /join"
};
var report = Analytics.Data.Ga.get(tableId, startDate, endDate, metric, options);
}
我非常感谢任何人对我有任何帮助或建议。我正在尝试从Chrome扩展程序查询google analytic的API。这可能吗?
答案 0 :(得分:0)
未在GA上进行过专门测试,但这是处理需要API外部服务器的脚本的一般方法:
ga.js
脚本,此文件必须出现在扩展程序中,它不是远程加载的脚本。tabId
)。 / LI>
醇>
的manifest.json:
"content_scripts": [
{
"matches": ["<all_urls>"],
"run_at": "document_start",
"all_frames": true,
"js": ["content.js"]
}
],
"background": {
"scripts": ["background.js", "ga.js"]
},
"content_security_policy":
"script-src 'self' https://ssl.google-analytics.com; object-src 'self'",
.............
content.js:
chrome.runtime.sendMessage({type: "getGA", data: some_data_for_GA});
chrome.runtime.onMessage.addListener(function(msg) {
if (msg.type == "GA") {
// apply msg.data to the page elements
...................
}
});
background.js:
chrome.runtime.onMessage.addListener(function(msg, sender, sendResponse) {
var tabId = sender.tab.id, frameId = sender.frameId;
if (msg.type == "getGA") {
gapi.client.analytics.data.ga.get({
..................... // use msg.data if needed
}).execute(function(response) {
sendMessageToFrameId(tabId, frameId, {type: "GA", data: response});
});
}
});
function sendMessageToFrameId(tabId, frameId, msg) {
// 1. frameId works since Chrome 41 and throws on prior versions
// 2. without frameId Chrome 45 sends the message to wrong tabs
try { chrome.tabs.sendMessage(tabId, msg, {frameId: frameId}); }
catch(e) { chrome.tabs.sendMessage(tabId, msg); }
}