2015-05-14 40 views
0

摘要:Web應用程序可以爲我調用UrlFetchApp.fetch(url),但將私鑰添加到url?谷歌Web應用程序隱藏我的私人信息

我從請求API密鑰的服務器提取信息。該服務要求我的API密鑰保持隱藏狀態,但我想創建可供任何人使用的Google表格。目前在Google表格中,我沒有看到隱藏密鑰的方法,因爲整個電子表格都是客戶端。

網絡應用可以做到這一點,但保持隱藏的關鍵(如果他們探索頁面源,他們仍然不會看到它)?所以在我的電子表格基本上,我會打電話:
UrlFetchApp.fetch(「http://mywebapp.com/getdata?myservice.com/requests‘)
,然後將Web應用程序調用:
UrlFetchApp.fetch(’https://myservice.com/requests?」 +專用密鑰)
和我的電子表格的用戶不知道私鑰的價值是什麼?

回答

2

是它的可能,但workarrounds。另一個答案已經告訴你可以查看.gs代碼。有幾種方法可以隱藏特殊值:
1)您可以將其保留在另一個私人電子表格中,並從該處讀取代碼。只要你讓代碼像你一樣運行,其他人就不會查看它的值。
2)製作一個獨立的web應用程序,而不是作爲表單的一部分,並從web應用程序做所有事情。僅共享已發佈的Web應用程序網址。

從你的問題,它不清楚你如何調用取(通過自定義功能?菜單項?onEdit?「等),這是非常相關的。也不清楚爲什麼你給一個自定義URL的應用程序腳本的webapp (它是不可能的),但在任何情況下,這兩種方法都可以幫助你。

+0

我把它從中檢索一個JSON字符串化字符串,然後我轉換的自定義函數範圍等我很高興與它保存在一個私人電子表格,並讓所有的API調用「通過」我。 – Reenen

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