Skip to main content

  | मौसम…

411 समाचार
Public archive edition · Attributed source reporting with original dates · AI drafts are excluded

411 REFERENCE · Wikibooks

Web App Development with Google Apps Script/authentication

Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.

Why authenticate? Quite often you'll want to protect your web app to ensure only certain people can use it. When you publish your page you have a few options in two major categories: Who has access (who can get to the page)? Just you Anyone in your domain (hamline.edu for me) Anyone Which account is being used to run the script? Yours (even when other people access) Theirs (won't work with "anyone" above) Those are useful but they're a little coarse grained. Sometimes you'll want only certain people to either have access and/or be able to do certain things. Who is accessing? For this section we'll assume you've set "who has access" to "anyone in your domain." If you do then you can determine who is accessing like this: var email = Session.getActiveUser().getEmail(); Are they allowed? Once you have the user's email, you can check it against a sheet in your spreadsheet that has allowed users and perhaps other information about them, like what things they're allowed to do. Let's assume you have a sheet that looks like this: + "my users" sheet email name role arundquist@hamline.edu Andy Rundquist admin test1@hamline.edu Testy McTesterson student test2@hamline.edu Tess Tesserson faculty Then we could authenticate the user like this: var email = Session.getActiveUser().getEmail(); var usersData=SpreadsheetApp.getActive().getSheetByName("my users").getDataRange().getValues(); usersData.shift() // gets rid of headers row var user = usersData.find(r=>r[0]==email); if (!user) { return HtmlService.createHtmlOutput("sorry, nothing for you here"); } // now do something cool with the user var role=user[2]; // not 3, remember how array numbering works if (role == 'admin') { // do cool things here } // etc