2013-01-24 41 views
1

我創建了一個簡單的Web應用程序(公開訪問的匿名用戶),其獲取查詢參數如下:Google Apps腳本:如何獲取由匿名用戶傳遞給Web應用程序的查詢參數?

function doGet(e){Logger.log("Key is"+e.parameter.key);} 

傳遞帕拉姆到App如下: https://script.google.com/macros/s/AKfycbxZ_r7tTs1sCQH9UOhPg2AVdWuMCDk6zD58lnsXciazRLmZ7q7P/exec?key=test

它正常工作時我以登錄用戶身份登錄該網址,能夠獲取該參數。但是當匿名用戶點擊相同時,數據不會被記錄。

這是可能的。如何實現這一目標?

回答

3

這裏對問題陳述稍作調整 - 記錄器僅適用於腳本所有者(誰也恰好記錄)。我加倍檢查,這確實是行爲。我檢查訪問一個簡單的網絡應用程序作爲另一個登錄用戶與測試帳戶和記錄器也不適用於該帳戶。

這實際上是目前Logger的一個已知限制。

在您編寫代碼時,記錄器對於調試更有用,而不是在其他人訪問您的代碼時。記錄器信息也不會在不同的運行中持續存在。

我實際上最終將我的日誌語句寫入一個簡單的文件。我添加了諸如時間戳這樣的小東西,並且可以使其更加健壯。如有必要,您甚至可以添加異常日誌和effective user信息。

以下是我通常如何將這些練習留給讀者的幾個片段。

功能我跑一次 -

function initLog() { 
    //add check to see if log already exists so you don't init multiple times 
    var logfile = DocsList.createFile('Log file for my script','') ; 
    ScriptProperties.setProperty('LogFile', logfile.getId()); 
    logfile.getId(); 
} 

實用的功能,我可以從我的代碼中任何地方調用 -

function logMsg(msg){ 
//add more checks here to init log if its not already done 
var logfile = DocsList.getFileById(ScriptProperties.getProperty('LogFile')); 
logfile.append(new Date().toString() + ' - ' + msg + '\n'); 
} 

簡單的由線束,以顯示如何做到這一點的工作 -

function logTests(){ 
initLog(); 
logMsg('hello world'); 
logMsg('test message'); 
} 

這是它的樣子。希望這可以幫助。 enter image description here

+0

感謝您的答覆阿倫:)雅似乎是問題。那天我通過在UserProperties中設置它進行測試,它成功地存儲了這些值。 –

相關問題