摘要:网络应用可以为我调用UrlFetchApp.fetch(url),但是可以在网址中添加私钥吗?
我从请求API密钥的服务器中提取信息。该服务要求我的API密钥保持隐藏状态,但我想创建可供任何人使用的Google表格。目前在Google表格中我没有看到隐藏密钥的方法,因为整个电子表格都是客户端。
网络应用程序可以执行此操作,但保持密钥隐藏(因此,如果他们浏览页面源,他们仍然看不到它)?所以基本上在我的电子表格中我会打电话:
UrlFetchApp.fetch(“http://mywebapp.com/getdata?myservice.com/requests”)然后网络应用调用:
UrlFetchApp.fetch(“https://myservice.com/requests?”+私钥)
我的电子表格用户不知道私钥的价值是什么?
答案 0 :(得分:2)
是可能的,但有工作周期。另一个答案已经告诉您可以查看.gs代码。有几种方法可以隐藏特殊值:
1)您可以将其保存在另一个私人电子表格中,并让代码从那里读取。只要你让代码像你自己一样运行,其他人就无法查看价值
2)制作一个独立的webapp,而不是作为工作表的一部分,并从webapp做一切。仅分享已发布的webapp网址。
从你的问题来看,不清楚你是如何调用fetch(来自自定义函数?菜单项?onEdit?"等)这里非常相关。还不清楚为什么你给应用程序脚本webapp提供一个自定义URL(它不可能),但无论如何这两种方法都可以帮助你。
答案 1 :(得分:0)
诀窍是创建一个库。然后将库添加到您的引用。为了安全起见,我在“物业服务”中添加了密钥。但似乎没有必要。 (我登录了一个不同的谷歌帐户,即使通过调试模式也无法探索库调用。)
我最终的RemoteRequest库代码:
function GetRequestWithAPIKey(url) {
alldata = UrlFetchApp.fetch(url + apikey()).getContentText();
return alldata;
}
function apikey_() { // The _ at the end makes this private
// Get multiple script properties in one call, then log them all.
var scriptProperties = PropertiesService.getScriptProperties();
var data = scriptProperties.getProperties();
s = "";
for (var key in data) {
s = s + data[key];
}
return s;
}
我真的很难让PropertiesService获取我的密钥,所以我知道所有密钥都知道我只有1。