如何将变量传递给电子表格函数?

时间:2013-12-28 17:55:53

标签: google-apps-script

以下是我要做的事情:

在我的网站中将Google电子表格嵌入多个位置。对于注册用户,我想显示电子表格中的所有数据。对于未注册的用户,我想隐藏密钥号码。

我有一个带有名为blackOut()的自定义函数的电子表格。我已将blackOut函数放在具有敏感数据的所有单元格中。所有blackOut()需要做的就是:

function blackOut(e) {
  var is registered = ??
  if (is_registered) return e;
  else return "";
}

但是我找不到任何方法可以将任何变量从我的网站“传递”到函数中,所以我无法使其工作。

这是我的环境:

在PHP中,我使用cURL从此URL获取电子表格的嵌入代码:

https://docs.google.com/spreadsheet/pub?key=[spreadsheet ID]& output = html& widget = true

然后我做了一些str_replace函数来使JS和CSS工作。

以下是我尝试过的内容:

  • 在我的函数中使用window.location(不起作用.Google不允许您访问窗口)
  • 全局传递javascript变量(JS全局变量在技术上附加到窗口对象)
  • 使用SpreadsheetApp.getActiveSpreadsheet()。getURL()(只返回电子表格的URL,而不是http请求中存在的URL)
  • 查看Google代码中的所有可用对象

我的理想解决方案:

如果我可以在网址中添加'& blackout = true'并将其传递到google脚本中的blackOut(),那就太棒了。我经常环顾四周,我认为这不可能。

我看过这些链接:

关于如何让它发挥作用的任何想法?

1 个答案:

答案 0 :(得分:1)

也许我理解你的问题是错误的,但我是否明白你没有使用iframe或直接查看表格?您正在使用已发布的网址,并从那里获取您的数据。您已经对HTML进行了一些自定义转换(因此您拥有自己编辑数据/ html的知识和工具)。

您可以更进一步,自己创建整个html表吗? 然后,您可以使用谷歌电子表格的查询功能(网址查询参数)。 这样,您就可以验证站点中的用户并执行两种不同的数据查询。 一个包含所有列,一个没有列。

例如,请参阅:http://acrl.ala.org/techconnect/?p=4001

对于Google语言参考:https://developers.google.com/chart/interactive/docs/querylanguage