将变量从HREF传递到Google HTMLSERVICE应用

时间:2016-03-31 21:26:01

标签: javascript url google-apps-script

我为我的工作场所建立了一个非常有用的工具,可以让我跟踪员工的出勤情况。我的最新补充是,当违规被标记时,电子邮件会发送一个指向该违规ID的链接。我希望能够单击该链接,加载html页面并将违规ID传递给页面。我一直在做很多搜索,但似乎无法找到一个明确的答案,也不是一个与我非常相似的案例。我发现的答案似乎并不适用于我的情况。

以下是示例:

URL: https://script.google.com/a/macros/mycomp.com/s/blahblahmyID/dev

HREF: https://script.google.com/a/macros/mycomp.com/s/blahblahmyID/dev?cID=1457989239035-cc3050b8

我想将1457989239035-cc3050b8值传递给我的页面。一旦我在页面上得到它,我可以从那里处理它,只是找不到从电子邮件中的HREF链接中提取它的方法。不使用传统网站的缺点之一。

以下是我的doGet()代码,用于从应用加载Index.html

 function doGet(e) {

 return HtmlService
     .createTemplateFromFile('Index')
     .evaluate()
     .setSandboxMode(HtmlService.SandboxMode.IFRAME);
 }

不确定该代码有多么有用,因为它非常标准。我是不是很幸运,试图这样做?

更新:

我意识到我没有足够的信息来说明这个系统是如何工作的。我使用HTML来提供存储在电子表格(谷歌表)上的信息。有问题的ID是对电子表格中条目的引用(第1列)。它不是应用程序的一部分,我只想传递我需要的row的值来获取数据。如果我有这个值,我可以运行一个脚本来从电子表格中获取所有其他值。

1 个答案:

答案 0 :(得分:1)

ID是e.parameter对象的一个​​属性,您应该使用类似id=e.parameter.id

的内容来获取它

您可以在问题中显示它,就在网址中的问号

之后立即传递

HREF:https://script.google.com/a/macros/mycomp.com/s/blahblahmyID/exec?id=1457989239035-cc3050b8

服务器代码将获取值,将其存储在某处并准备好在客户端javaScript请求时将其发送回来。

请参阅下面的示例:

function doGet(e) {
 var id = e.parameter.id
 PropertiesService.getScriptProperties().setProperty('id',id);
 return HtmlService
     .createTemplateFromFile('Index')
     .evaluate()
     .setSandboxMode(HtmlService.SandboxMode.IFRAME);
 }
function returnID(){
  return PropertiesService.getScriptProperties().getProperty('id');
}

// in your client javascript, add a call like this (outside of any function so it is executed on page load... or use onload="theFunctionName"...):

google.script.run.withSuccessHandler(getID).returnID();
function getID(id){
  console.log(id);
}