google-apps-script - 如何使用 Google Apps 脚本监控 google 网站的页面活动
问题描述
问题 我希望能够使用 Apps 脚本监控我的谷歌网站上的用户活动,特别是用户正在访问的页面。我不能使用谷歌分析(它不在我与谷歌的合同范围内)。到目前为止,Apps 脚本能够在访问页面时返回用户的用户 ID(电子邮件地址),但是我不知道如何返回该用户激活了哪些页面。
到目前为止 ,我已经创建了一个 Web 应用程序并将其部署/嵌入到测试谷歌网站的 2 个页面中。它将值返回到链接的 google 表格文件中的表中。这是脚本:
function doGet(event) {
return HtmlService.createHtmlOutputFromFile('UserLog.html');
}
function getPage(pageTitle) {
var user = Session.getActiveUser();
var ss = SpreadsheetApp.getActive();
var db = "Webapp Log";
var db_ss = ss.getSheetByName(db);
var now = new Date();
var page = pageTitle;
var values = [now,user,page,"User activated webapp",Session.getTemporaryActiveUserKey()];
db_ss.getRange(db_ss.getLastRow()+1, 1, 1, 5).setValues([values]);
};
“UserLog.html”代码是这样的:
<html>
<head>
<base target="_top">
</head>
<body>
<script>
var page = [Solution]
google.script.run.getPage(page);
</script>
</body>
</html>
到目前为止,返回值看起来像这样(地址匿名): 表值
如您所见,“页面”字段为空白。
我需要什么 使用嵌入式 Web 应用程序返回激活页面 URL 或返回激活页面的另一个独特方面,例如页面标题或“第 1 页”、“第 2 页”等(网站上的所有页面都有一个独特的标题)。
如何才能做到这一点?这甚至可能吗?
解决方案
你可以用e.parameters做到这一点
例如,合并
page
您在 WebApp URL 末尾附加的参数。当您在每个页面中嵌入 WebApp URL 时,为页面分配一个唯一值,例如
https://script.google.com/a/XXX/macros/s/XXX/exec?page=1
,https://script.google.com/a/XXX/macros/s/XXX/exec?page=2
现在,在 Apps 脚本中,您只需稍微修改doGet()
函数即可检索页面:
function doGet(event) {
var page = event.parameter.page;
return HtmlService.createHtmlOutputFromFile('UserLog.html');
}
- 其余的取决于您的喜好。最简单的方法是将函数的值直接粘贴
page
到电子表格中doGet()
- 这将避免将参数传递给html
文件,然后再google.script.run
返回到 .gs 函数。
推荐阅读
- javascript - 用 Jest 在 vanilla js 中测试 AJAX
- angular - Angular 5.2 中的请求标头
- javascript - Pubnub javascript视频聊天摄像头和麦克风静音机制?
- python - Jupyter 笔记本,绘图出现两次
- python-2.7 - 如何在python for循环中预分配数组?
- javascript - 同时等待 2 个(或更多)异步生成器
- c# - 根据您在 form1 中单击的按钮在 form2 中显示数据
- php - 仅分页表不显示某些页面上的数据
- excel - 如何在 Tableau 中为三个变量和离散 OX 数据创建堆积柱形图?
- html - 使用 CSS 将图标与输入框对齐