如何将变量传递给电子表格函数?
Posted
技术标签:
【中文标题】如何将变量传递给电子表格函数?【英文标题】:How can I pass a variable to spreadsheet function? 【发布时间】:2014-01-16 01:00:56 【问题描述】:这是我想要做的:
在我的网站中的多个位置嵌入 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=[spreadsheetID]&output=html&widget=true
然后我正在做一些 str_replace 函数来使 JS 和 CSS 工作。
这是我尝试过的:
在我的函数中使用 window.location(不起作用。Google 不允许您访问 window) 在全局中传递一个 javascript 变量(在 JS 中,全局变量在技术上附加到窗口对象) 使用 SpreadsheetApp.getActiveSpreadsheet().getURL()(只返回电子表格的 URL,而不是 http 请求中存在的 URL) 查看 Google 代码中的所有可用对象我的理想解决方案:
如果我可以将 '&blackout=true' 添加到 URL,然后将其传递到 google 脚本中的 blackOut(),那就太好了。我环顾四周,我认为这是不可能的。
我查看了以下链接:
How can I get URL parameters passed to a Google Spreadsheet using Google Apps Script? Alternative to global variables GAS: Problems in using global variables in functions关于如何让它发挥作用的任何想法?
【问题讨论】:
【参考方案1】:也许我理解你的问题是错误的,但我是否理解你没有使用 iframe 或直接查看工作表?您正在使用已发布的 url,并从那里获取您的数据。您已经对 HTML 进行了一些自定义转换(因此您拥有自己编辑数据/html 的知识和工具)。
您能更进一步,自己创建整个 html 表吗? 然后你可以使用谷歌电子表格的查询功能(网址查询参数)。 通过这种方式,您可以验证站点中的用户并执行两个不同的数据查询。 一个包含所有列,一个不包含某些列。
例如查看:http://acrl.ala.org/techconnect/?p=4001
谷歌语言参考:https://developers.google.com/chart/interactive/docs/querylanguage
【讨论】:
一开始我也想过这样做。我本可以将更改后的“&format=html”添加到“&format=csv”,然后在 HTML 表中吐出数据。我对该解决方案的问题是我会丢失电子表格的格式(颜色等),我想尽可能多地控制我的客户。我希望我的客户能够通过 Google 文档编辑电子表格,并将这些更改显示在网站上。 好吧,在这种情况下,谷歌不会在已发布的表格中提供该选项。您可以做的(作为一种解决方法)是使用 importRange 函数创建第二张工作表。同样的想法也适用。原来的所有列,第二个省略了一些。然后发布这两个版本。 好的,importRange 是否也导入样式? 不,因为您创建了使用此功能的第二个电子表格,所以您创建了一个电子表格,其中内容会随着它所连接的工作表而变化。即您可以制作具有相同样式的原始副本(源电子表格),甚至可以做一些不同的样式。这只是这种方法的额外好处之一。这是一个完全不同的(已发布)电子表格,但数据范围是链接的。如果您还想(动态)更改颜色和样式,那您的要求很高。 好的,谢谢。支持你的答案。感谢您的帮助:)以上是关于如何将变量传递给电子表格函数?的主要内容,如果未能解决你的问题,请参考以下文章
如何在用电子表格(),php生成的.csv文件中显示带小数的整数?