2015-05-26 38 views
-1

我有一個將用於協作的Google電子表格,並且我能夠創建一個UI接口,它將從表中獲取和更新數據以方便用戶。用於驗證列表中是否存在值的腳本

對於我需要限制用戶只能更新行數的工作,如果他們被分配給他們,我能夠做到這一點。但除此之外,我還需要允許管理員分配或更新未分配給他們的行。

我有一張包含所有員工的電子郵件地址和管理員標誌的表格。

Name____________Email________________Is聯繫
員工[email protected]_____Admin
員工[email protected]_____
員工[email protected]_____
員工[email protected]_____Admin
員工[email protected]_____
Employee [email protected]_____

我該怎麼寫一個在我的腳本中,如果觸發某個功能的用戶擁有管理員權限,則允許我進行此操作。

我用戶Session.getActiveUser()。getEmail()來取出用戶的電子郵件地址。我正在創建在Google應用程序域中使用的工具。

檢查用戶是否爲行的所有者的代碼,這部分工作正常,但我想要做的是如果用戶是管理員,他們基本上會跳過此檢查。

if (s.getRange("E4").getValue() != usr()){ 
    msg("Once a Task is assigned to an employee, only assigned employee can make any changes to the Task. Thank you"); 
    return; 
} 
s = sheet 
usr() = function calling to check active user email 

如果我可以這樣做COUNTIFS我在哪裏可以查看基於電子郵件地址和管理標準計數和如果> = 1進行如果0顯示錯誤,你不能進行更改。

請讓我知道。

真的很感謝幫助。

謝謝。

Zooooon

+1

您有一行代碼更新行的,你可能有之前一行代碼,支票如果用戶是該行的所有者。你能發表那幾行代碼嗎?如果你已經有條件檢查,你可以添加一個測試,以確定該用戶是否是管理員? –

+0

我的行有一列將用戶分配給值。目前我正在檢查是否只分配了該用戶可以進行更改。但我需要做的是允許管理員爲其他人進行更改。即使它沒有分配給他們。 – Taizooooon

+0

那麼,你不會發布任何代碼? –

回答

0

你在找這樣的嗎?

function myFunction() { 
    var s = SpreadsheetApp.getActiveSheet(); 
    var usr = Session.getActiveUser().getEmail(); 
    var emails = s.getRange("E2:F").getValues(); 

for (var i=0;i<emails.length;i++) { 
    if (emails[i][0] === usr){ 
     if (emails[i][1] === "Admin") { 
     //Do something when Admin 
     return; 
     } else { 
     //Do something when not admin 
     return; 
     } 
    } else { 
     //Do something when email not in the list 
    } 
    } 
} 

我假設你的數據在範圍「d:F」

+0

謝謝你的建議。只要我有時間使用該工具,並且在遇到任何問題時提供反饋或問題,我會盡快嘗試此解決方案。我確實有一個好奇的問題,如果條件你已經使用===,我通常使用==,是否有任何區別,應該建議哪一個。對不起,這可能看起來像一個愚蠢的問題,但我非常天真和學習。 – Taizooooon

+0

[Here](http://stackoverflow.com/a/359509/2589810)是對您的問題的詳細解答 –

+0

感謝您分享kb。同樣感謝您提供的解決方案,它的工作原理和微小的變化使我能夠很好地工作。 – Taizooooon

相關問題