google.script.run рдПрдХ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб JavaScript API рд╣реИ. рдЗрд╕рдХреА рдорджрдж рд╕реЗ, рдПрдЪрдЯреАрдПрдордПрд▓ рд╕реЗрд╡рд╛ рд╡рд╛рд▓реЗ рдкреЗрдЬ, рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб Apps Script рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ. рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, google.script.run рдХреА рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рд╕реБрд╡рд┐рдзрд╛ рджрд┐рдЦрд╛рдИ рдЧрдИ рд╣реИ. рдЗрд╕рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб JavaScript рд╕реЗ, рд╕рд░реНрд╡рд░ рдкрд░ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ.
Code.gs
function doGet() {
return HtmlService.createHtmlOutputFromFile('Index');
}
function doSomething() {
Logger.log('I was called!');
}Index.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<script>
google.script.run.doSomething();
</script>
</head>
</html>рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╡реЗрдм рдРрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рддреМрд░ рдкрд░ рдбрд┐рдкреНрд▓реЙрдп рдХрд░рдиреЗ рдФрд░ рдЗрд╕рдХреЗ рдпреВрдЖрд░рдПрд▓ рдкрд░ рдЬрд╛рдиреЗ рдкрд░, рдЖрдкрдХреЛ рдХреБрдЫ рдирд╣реАрдВ рджрд┐рдЦреЗрдЧрд╛. рд╣рд╛рд▓рд╛рдВрдХрд┐, рд▓реЙрдЧ рджреЗрдЦрдиреЗ рдкрд░ рдЖрдкрдХреЛ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рд╕рд░реНрд╡рд░ рдлрд╝рдВрдХреНрд╢рди doSomething() рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛.
рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдХреЙрд▓ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╣реЛрддреЗ рд╣реИрдВ: рдЬрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░, рд╕рд░реНрд╡рд░ рд╕реЗ рдлрд╝рдВрдХреНрд╢рди doSomething() рдЪрд▓рд╛рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ, рддреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЬрд╡рд╛рдм рдХрд╛ рдЗрдВрддрдЬрд╝рд╛рд░ рдХрд┐рдП рдмрд┐рдирд╛, рдХреЛрдб рдХреА рдЕрдЧрд▓реА рд▓рд╛рдЗрди рдкрд░ рддреБрд░рдВрдд рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ. рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓, рдЖрдкрдХреА рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХреНрд░рдо рдореЗрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ. рдЕрдЧрд░ рдПрдХ рд╣реА рд╕рдордп рдкрд░ рджреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдХрд┐ рдХреМрди рд╕рд╛ рдлрд╝рдВрдХреНрд╢рди рдкрд╣рд▓реЗ рдЪрд▓реЗрдЧрд╛. рдкреЗрдЬ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдкрд░, рдирддреАрдЬреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ. рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕рдХреНрд╕реЗрд╕ рд╣реИрдВрдбрд▓рд░ рдФрд░ рдлрд╝реЗрд▓реНрдпреЛрд░ рд╣реИрдВрдбрд▓рд░ рдЖрдкрдХреЗ рдХреЛрдб рдХреЗ рдлрд╝реНрд▓реЛ рдХреЛ рдХрдВрдЯреНрд░реЛрд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВ.
google.script.run рдПрдкреАрдЖрдИ, рд╕рд░реНрд╡рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рд╕рд╛рде 10 рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ. рдЕрдЧрд░ 10 рдХреЙрд▓ рдЕрдм рднреА рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЖрдкрдиреЗ 11рд╡рд╛рдВ рдХреЙрд▓ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╕рд░реНрд╡рд░ рдлрд╝рдВрдХреНрд╢рди рддрдм рддрдХ рдбрд┐рд▓реЗ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЬрдм рддрдХ 10 рдореЗрдВ рд╕реЗ рдХреЛрдИ рдПрдХ рдХреЙрд▓ рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛. рдЖрдо рддреМрд░ рдкрд░, рдЖрдкрдХреЛ рдЗрд╕ рдкрд╛рдмрдВрджреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд╛рдпрдж рд╣реА рдХрднреА рд╕реЛрдЪрдирд╛ рдкрдбрд╝реЗ. рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЬрд╝реНрдпрд╛рджрд╛рддрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╣реА рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ рд╕рд╛рде рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ 10 рд╕реЗ рдХрдо рдкрд░ рд╕реАрдорд┐рдд рдХрд░ рджреЗрддреЗ рд╣реИрдВ.
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Firefox рдореЗрдВ рдпрд╣ рд╕реАрдорд╛ 6 рд╣реИ. рдЬрд╝реНрдпрд╛рджрд╛рддрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░, рд╕рд░реНрд╡рд░ рд╕реЗ рдХрд┐рдП рдЧрдП рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рддрдм рддрдХ рд░реЛрдХрддреЗ рд╣реИрдВ, рдЬрдм рддрдХ рдореМрдЬреВрджрд╛ рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рд╕реЗ рдХреЛрдИ рдПрдХ рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛.
рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рджрд┐рдЦрд╛рдИ рдЧрдИ рд╡реИрд▓реНрдпреВ
рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рдЗрд╕реА рддрд░рд╣, рд╕рд░реНрд╡рд░ рдлрд╝рдВрдХреНрд╢рди, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╡реИрд▓реНрдпреВ рджрд┐рдЦрд╛ рд╕рдХрддрд╛ рд╣реИ. рдЗрд╕рдХреЗ рд▓рд┐рдП, рд╕рдХреНрд╕реЗрд╕ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ.
рдХрд╛рдиреВрдиреА рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рд░рд┐рдЯрд░реНрди рд╡реИрд▓реНрдпреВ, JavaScript рдкреНрд░рд┐рдорд┐рдЯрд┐рд╡ рд╣реЛрддреА рд╣реИрдВ. рдЬреИрд╕реЗ, Number,
Boolean, String рдпрд╛ null. рд╕рд╛рде рд╣реА, рдпреЗ JavaScript рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рдРрд╕реЗ рдРрд░реЗ рднреА рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдкреНрд░рд┐рдорд┐рдЯрд┐рд╡, рдСрдмреНрдЬреЗрдХреНрдЯ, рдФрд░ рдРрд░реЗ рд╕реЗ рдмрдиреЗ рд╣реЛрддреЗ рд╣реИрдВ. рдкреЗрдЬ рдореЗрдВ рдореМрдЬреВрдж form рдПрд▓рд┐рдореЗрдВрдЯ рдХреЛ рднреА рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рддреМрд░ рдкрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╕рд┐рд░реНрдлрд╝ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП. рд╕рд╛рде рд╣реА, рдЗрд╕реЗ рд░рд┐рдЯрд░реНрди рд╡реИрд▓реНрдпреВ рдХреЗ рддреМрд░ рдкрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛. рдЕрдЧрд░ form рдХреЗ рдЕрд▓рд╛рд╡рд╛, Date, Function, рдбреАрдУрдПрдо рдПрд▓рд┐рдореЗрдВрдЯ рдпрд╛ рдЕрдиреНрдп рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдЯрд╛рдЗрдк рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдЕрдиреБрд░реЛрдз рдкреВрд░реЗ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ. рдЗрд╕рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдпрд╛ рдРрд░реЗ рдореЗрдВ рдореМрдЬреВрдж рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдЯрд╛рдЗрдк рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ. рд╕рд░реНрдХреБрд▓рд░ рд░реЗрдлрд╝рд░рдВрд╕ рдмрдирд╛рдиреЗ рд╡рд╛рд▓реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рднреА рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ. рд╕рд╛рде рд╣реА, рдРрд░реЗ рдореЗрдВ рдореМрдЬреВрдж рдРрд╕реЗ рдлрд╝реАрд▓реНрдб рдЬрд┐рдирдХреА рд╡реИрд▓реНрдпреВ рддрдп рдирд╣реАрдВ рдХреА рдЧрдИ рд╣реИ рд╡реЗ null рдмрди рдЬрд╛рдПрдВрдЧреЗ.
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕рд░реНрд╡рд░ рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ, рдУрд░рд┐рдЬрдирд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдХреЙрдкреА рдмрди рдЬрд╛рддрд╛ рд╣реИ. рдЕрдЧрд░ рдХреЛрдИ рд╕рд░реНрд╡рд░ рдлрд╝рдВрдХреНрд╢рди рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрд╕рдХреА рдкреНрд░реЙрдкрд░реНрдЯреА рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдореМрдЬреВрдж рдкреНрд░реЙрдкрд░реНрдЯреА рдкрд░ рдЗрд╕рдХрд╛ рдЕрд╕рд░ рдирд╣реАрдВ рдкрдбрд╝рддрд╛.
рд╕рдХреНрд╕реЗрд╕ рд╣реИрдВрдбрд▓рд░
рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдХреЛрдб, рд╕рд░реНрд╡рд░ рдХреЙрд▓ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╝рд╛рд░ рдХрд┐рдП рдмрд┐рдирд╛ рдЕрдЧрд▓реА рд▓рд╛рдЗрди рдкрд░ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ. рдЗрд╕рд▓рд┐рдП, withSuccessHandler(function) рдХреА рдорджрдж рд╕реЗ, рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рддрдм рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрдм рд╕рд░реНрд╡рд░ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИ. рдЕрдЧрд░ рд╕рд░реНрд╡рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛрдИ рд╡реИрд▓реНрдпреВ рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдкреАрдЖрдИ рдЙрд╕ рд╡реИрд▓реНрдпреВ рдХреЛ рдирдП рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рддреМрд░ рдкрд░ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ.
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╕рд░реНрд╡рд░ рдХреЗ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдкрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рджрд┐рдЦрдиреЗ рд╡рд╛рд▓реА рд╕реВрдЪрдирд╛ рджрд┐рдЦрд╛рдИ рдЧрдИ рд╣реИ. рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрд╕ рдХреЛрдб рд╕реИрдВрдкрд▓ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рдЬрд╝рд░реВрд░реА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдлрд╝рдВрдХреНрд╢рди рдЖрдкрдХреЗ Gmail рдЦрд╛рддреЗ рдХреЛ рдРрдХреНрд╕реЗрд╕ рдХрд░ рд░рд╣рд╛ рд╣реИ. рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдкреЗрдЬ рд▓реЛрдб рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдбрд┐рдЯрд░ рд╕реЗ getUnreadEmails() рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рддрд░реАрдХреЗ рд╕реЗ рдПрдХ рдмрд╛рд░ рдЪрд▓рд╛рдПрдВ. рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡реЗрдм рдРрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдбрд┐рдкреНрд▓реЙрдп рдХрд░рддреЗ рд╕рдордп, рдЗрд╕реЗ тАЬрд╡реЗрдм рдРрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдРрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛тАЭ рдХреЗ рддреМрд░ рдкрд░ рдЪрд▓рд╛рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдРрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп рдЖрдкрдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛.
Code.gs
function doGet() {
return HtmlService.createHtmlOutputFromFile('Index');
}
function getUnreadEmails() {
return GmailApp.getInboxUnreadCount();
}Index.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<script>
function onSuccess(numUnread) {
var div = document.getElementById('output');
div.innerHTML = 'You have ' + numUnread
+ ' unread messages in your Gmail inbox.';
}
google.script.run.withSuccessHandler(onSuccess)
.getUnreadEmails();
</script>
</head>
<body>
<div id="output"></div>
</body>
</html>рдлрд╝реЗрд▓рд┐рдпрд░ рд╣реИрдВрдбрд▓рд░
рдЕрдЧрд░ рд╕рд░реНрд╡рд░ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдпрд╛ рдХреЛрдИ рдЧрдбрд╝рдмрдбрд╝реА рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рддреЛ withFailureHandler(function) рдЖрдкрдХреЛ рд╕рдлрд▓рддрд╛ рд╣реИрдВрдбрд▓рд░ рдХреЗ рдмрдЬрд╛рдп рдЧрдбрд╝рдмрдбрд╝реА рд╣реИрдВрдбрд▓рд░ рддрдп рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ. рдЗрд╕рдХреЗ рд╕рд╛рде рд╣реА, Error рдСрдмреНрдЬреЗрдХреНрдЯ (рдЕрдЧрд░ рдХреЛрдИ рд╣реИ) рдХреЛ рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯ рдХреЗ рддреМрд░ рдкрд░ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ.
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЕрдЧрд░ рдЖрдкрдиреЗ рдЧрдбрд╝рдмрдбрд╝реА рд╣реИрдВрдбрд▓рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдмрддрд╛рдпрд╛ рд╣реИ, рддреЛ рдЧрдбрд╝рдмрдбрд╝рд┐рдпреЛрдВ рдХреЛ JavaScript рдХрдВрд╕реЛрд▓ рдореЗрдВ рд▓реЙрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, withFailureHandler(null) рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ рдпрд╛
рдРрд╕рд╛ рдлрд╝реЗрд▓рд┐рдпрд░ рд╣реИрдВрдбрд▓рд░ рджреЗрдВ рдЬреЛ рдХреБрдЫ рди рдХрд░реЗ.
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдлрд╝реЗрд▓ рд╣реЛрдиреЗ рдкрд░ рд╣реИрдВрдбрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕, рдкрд╛рд╕ рд╣реЛрдиреЗ рдкрд░ рд╣реИрдВрдбрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕реЗ рдорд┐рд▓рддрд╛-рдЬреБрд▓рддрд╛ рд╣реЛрддрд╛ рд╣реИ.
Code.gs
function doGet() {
return HtmlService.createHtmlOutputFromFile('Index');
}
function getUnreadEmails() {
// 'got' instead of 'get' will throw an error.
return GmailApp.gotInboxUnreadCount();
}Index.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<script>
function onFailure(error) {
var div = document.getElementById('output');
div.innerHTML = "ERROR: " + error.message;
}
google.script.run.withFailureHandler(onFailure)
.getUnreadEmails();
</script>
</head>
<body>
<div id="output"></div>
</body>
</html>рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ
рд╕рд░реНрд╡рд░ рдХреЛ рдХрдИ рдмрд╛рд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдлрд▓рддрд╛ рдпрд╛ рдЧрдбрд╝рдмрдбрд╝реА рдХреЗ рдПрдХ рд╣реА рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдлрд┐рд░ рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рдЗрд╕рдХреЗ рд▓рд┐рдП, withUserObject(object) рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ. рдЗрд╕рд╕реЗ рдПрдХ рдРрд╕рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗрдЧрд╛ рдЬрд┐рд╕реЗ рд╣реИрдВрдбрд▓рд░ рдХреЛ рджреВрд╕рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рддреМрд░ рдкрд░ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛.
рдЗрд╕ тАЬрдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдСрдмреНрдЬреЗрдХреНрдЯтАЭ рдХреЛ User рдХреНрд▓рд╛рд╕ рдХреЗ рд╕рд╛рде рднреНрд░рдорд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП. рдЗрд╕рдХреА рдорджрдж рд╕реЗ, рдЙрд╕ рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ рдореЗрдВ рдЬрд╡рд╛рдм рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдиреЗ рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд┐рдпрд╛ рдерд╛. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдирд╣реАрдВ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ. рдЗрд╕рд▓рд┐рдП, рдпреЗ рдХреБрдЫ рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ. рдЬреИрд╕реЗ, рдлрд╝рдВрдХреНрд╢рди, рдбреАрдУрдПрдо рдПрд▓рд┐рдореЗрдВрдЯ рд╡рдЧреИрд░рд╣. рдЗрди рдкрд░ рд╕рд░реНрд╡рд░ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП, рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рд░рд┐рдЯрд░реНрди рд╡реИрд▓реНрдпреВ рд╕реЗ рдЬреБрдбрд╝реА рдкрд╛рдмрдВрджрд┐рдпрд╛рдВ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВ. рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдРрд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рдЬрд┐рдиреНрд╣реЗрдВ new рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реЛ.
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рджреЛрдиреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рд╕реЗ, рд╕рд░реНрд╡рд░ рд╕реЗ рдорд┐рд▓реА рд╡реИрд▓реНрдпреВ рдХреЗ рд╕рд╛рде рдмрдЯрди рдЕрдкрдбреЗрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛. рд╣рд╛рд▓рд╛рдВрдХрд┐, рджреЛрдиреЛрдВ рдмрдЯрди рдПрдХ рд╣реА рд╕рдХреНрд╕реЗрд╕ рд╣реИрдВрдбрд▓рд░ рд╢реЗрдпрд░ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рджреВрд╕рд░рд╛ рдмрдЯрди рдкрд╣рд▓реЗ рдЬреИрд╕рд╛ рд╣реА рд░рд╣реЗрдЧрд╛. onclick рд╣реИрдВрдбрд▓рд░ рдХреЗ рдЕрдВрджрд░, this рдХреАрд╡рд░реНрдб button рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ.
Code.gs
function doGet() {
return HtmlService.createHtmlOutputFromFile('Index');
}
function getEmail() {
return Session.getActiveUser().getEmail();
}Index.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<script>
function updateButton(email, button) {
button.value = 'Clicked by ' + email;
}
</script>
</head>
<body>
<input type="button" value="Not Clicked"
onclick="google.script.run
.withSuccessHandler(updateButton)
.withUserObject(this)
.getEmail()" />
<input type="button" value="Not Clicked"
onclick="google.script.run
.withSuccessHandler(updateButton)
.withUserObject(this)
.getEmail()" />
</body>
</html>рдлрд╝реЙрд░реНрдо
рдЕрдЧрд░ рдХрд┐рд╕реА рд╕рд░реНрд╡рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ form рдПрд▓рд┐рдореЗрдВрдЯ рдХреЗ рд╕рд╛рде рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рддреМрд░ рдкрд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдлрд╝реЙрд░реНрдо рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрди рдЬрд╛рддрд╛ рд╣реИ. рдЗрд╕рдореЗрдВ рдлрд╝реАрд▓реНрдб рдХреЗ рдирд╛рдо, рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рддреМрд░ рдкрд░ рдФрд░ рдлрд╝реАрд▓реНрдб рдХреА рд╡реИрд▓реНрдпреВ, рд╡реИрд▓реНрдпреВ рдХреЗ рддреМрд░ рдкрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╣реЛрддреА рд╣реИрдВ. рдлрд╝рд╛рдЗрд▓-рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдХреЗ рдХреЙрдиреНрдЯреЗрдВрдЯ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рд╕рднреА рд╡реИрд▓реНрдпреВ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рдлрд╝рд╛рдЗрд▓-рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдХрд╛ рдХреЙрдиреНрдЯреЗрдВрдЯ, Blob рдСрдмреНрдЬреЗрдХреНрдЯ рдмрди рдЬрд╛рддрд╛ рд╣реИ.
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдлрд╝реЙрд░реНрдо рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рдЗрд╕рдореЗрдВ рдлрд╝рд╛рдЗрд▓-рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ. рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреЗрдЬ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛. рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдХреЛ Google Drive рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░рддрд╛ рд╣реИ. рдЗрд╕рдХреЗ рдмрд╛рдж, рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдкреЗрдЬ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдпреВрдЖрд░рдПрд▓ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ. onsubmit рд╣реИрдВрдбрд▓рд░ рдХреЗ рдЕрдВрджрд░, this рдХреАрд╡рд░реНрдб рдлрд╝реЙрд░реНрдо рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ. рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреЗрдЬ рдкрд░ рд╕рднреА рдлрд╝реЙрд░реНрдо рд▓реЛрдб рд╣реЛрдиреЗ рдкрд░, preventFormSubmit рдиреЗ рд╕рдмрдорд┐рдЯ рдХрд░рдиреЗ рдХреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рд╣реИ. рдЗрд╕рд╕реЗ рдкреЗрдЬ рдХреЛ рдХрд┐рд╕реА рдЕрдкрд╡рд╛рдж рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЧрд▓рдд рдпреВрдЖрд░рдПрд▓ рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ.
Code.gs
function doGet() {
return HtmlService.createHtmlOutputFromFile('Index');
}
function processForm(formObject) {
var formBlob = formObject.myFile;
var driveFile = DriveApp.createFile(formBlob);
return driveFile.getUrl();
}Index.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<script>
// Prevent forms from submitting.
function preventFormSubmit() {
var forms = document.querySelectorAll('form');
for (var i = 0; i < forms.length; i++) {
forms[i].addEventListener('submit', function(event) {
event.preventDefault();
});
}
}
window.addEventListener('load', preventFormSubmit);
function handleFormSubmit(formObject) {
google.script.run.withSuccessHandler(updateUrl).processForm(formObject);
}
function updateUrl(url) {
var div = document.getElementById('output');
div.innerHTML = '<a href="' + url + '">Got it!</a>';
}
</script>
</head>
<body>
<form id="myForm" onsubmit="handleFormSubmit(this)">
<input name="myFile" type="file" />
<input type="submit" value="Submit" />
</form>
<div id="output"></div>
</body>
</html>рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░рдирд░
google.script.run рдХреЛ тАЬрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░рдирд░тАЭ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдбрд░ рдХреЗ рддреМрд░ рдкрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рдЕрдЧрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░рдирд░ рдореЗрдВ рд╕рдлрд▓рддрд╛ рд╣реИрдВрдбрд▓рд░, рдЧрдбрд╝рдмрдбрд╝реА рд╣реИрдВрдбрд▓рд░ рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореМрдЬреВрджрд╛ рд░рдирд░ рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реЛрддрд╛. рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЖрдкрдХреЛ рдирдП рд╡реНрдпрд╡рд╣рд╛рд░ рд╡рд╛рд▓рд╛ рдПрдХ рдирдпрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░рдирд░ рдорд┐рд▓рддрд╛ рд╣реИ.
withSuccessHandler(), withFailureHandler(), рдФрд░ withUserObject() рдХреЛ рдХрд┐рд╕реА рднреА рдХреНрд░рдо рдореЗрдВ рдФрд░ рдХрд┐рд╕реА рднреА рдХреЙрдореНрдмрд┐рдиреЗрд╢рди рдХреЗ рд╕рд╛рде рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░рдирд░ рдкрд░, рд╡реИрд▓реНрдпреВ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рд╣рд╛рд▓рд╛рдВрдХрд┐, рдРрд╕рд╛ рд╕рд┐рд░реНрдлрд╝ рддрдм рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрдм рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░рдирд░ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдХреЛрдИ рд╡реИрд▓реНрдпреВ рд╕реЗрдЯ рд╣реЛ. рдирдИ рд╡реИрд▓реНрдпреВ, рдкрд┐рдЫрд▓реА рд╡реИрд▓реНрдпреВ рдХреЛ рдмрджрд▓ рджреЗрддреА рд╣реИ.
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╕рд░реНрд╡рд░ рд╕реЗ рдХрд┐рдП рдЧрдП рддреАрдиреЛрдВ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЧрдбрд╝рдмрдбрд╝реА рд╣реИрдВрдбрд▓рд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ. рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдлрд▓рддрд╛ рдХреЗ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реИрдВрдбрд▓рд░ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВ:
var myRunner = google.script.run.withFailureHandler(onFailure);
var myRunner1 = myRunner.withSuccessHandler(onSuccess);
var myRunner2 = myRunner.withSuccessHandler(onDifferentSuccess);
myRunner1.doSomething();
myRunner1.doSomethingElse();
myRunner2.doSomething();
рдирд┐рдЬреА рдлрд╝рдВрдХреНрд╢рди
рдЬрд┐рди рд╕рд░реНрд╡рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдирд╛рдо рдХреЗ рдЖрдЦрд┐рд░ рдореЗрдВ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рд╣реЛрддрд╛ рд╣реИ рдЙрдиреНрд╣реЗрдВ рдирд┐рдЬреА рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ.
рдЗрди рдлрд╝рдВрдХреНрд╢рди рдХреЛ google.script рд╕реЗ рдХреЙрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛. рд╕рд╛рде рд╣реА, рдЗрдирдХреЗ рдирд╛рдо рдХрднреА рднреА рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдирд╣реАрдВ рднреЗрдЬреЗ рдЬрд╛рддреЗ. рдЗрд╕рд▓рд┐рдП, рдЗрдирдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдРрд╕реА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдЧреЛрдкрдиреАрдп рд░рдЦрдирд╛ рдЬрд╝рд░реВрд░реА рд╣реИ. google.script рдХреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдореМрдЬреВрдж рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдРрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рднреА рдирд╣реАрдВ рджрд┐рдЦрддреЗ рдЬрд┐рдиреНрд╣реЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЯреЙрдк рд▓реЗрд╡рд▓ рдкрд░ рдирд╣реАрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ.
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди getBankBalance() рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛрдб рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ. рдЕрдЧрд░ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдЖрдкрдХреЗ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рдЗрд╕рдХрд╛ рдирд╛рдо рдкрддрд╛ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ. рднрд▓реЗ рд╣реА, рдЖрдкрдиреЗ рдЗрд╕реЗ рдХреЙрд▓ рди рдХрд┐рдпрд╛ рд╣реЛ. рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ deepSecret_() рдФрд░ obj.objectMethod() рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рджрд┐рдЦрддреЗ.
Code.gs
function doGet() {
return HtmlService.createHtmlOutputFromFile('Index');
}
function getBankBalance() {
var email = Session.getActiveUser().getEmail()
return deepSecret_(email);
}
function deepSecret_(email) {
// Do some secret calculations
return email + ' has $1,000,000 in the bank.';
}
var obj = {
objectMethod: function() {
// More secret calculations
}
};Index.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<script>
function onSuccess(balance) {
var div = document.getElementById('output');
div.innerHTML = balance;
}
google.script.run.withSuccessHandler(onSuccess)
.getBankBalance();
</script>
</head>
<body>
<div id="output">No result yet...</div>
</body>
</html>Google Workspace рдРрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдбрд╛рдпрд▓реЙрдЧ рдмреЙрдХреНрд╕ рдХрд╛ рд╕рд╛рдЗрдЬрд╝ рдмрджрд▓рдирд╛
Google Docs, Sheets рдпрд╛ Forms рдореЗрдВ рдХрд╕реНрдЯрдо рдбрд╛рдпрд▓реЙрдЧ рдмреЙрдХреНрд╕ рдХрд╛ рд╕рд╛рдЗрдЬрд╝ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рдЗрд╕рдХреЗ рд▓рд┐рдП, рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдХреЛрдб рдореЗрдВ google.script.host, setWidth(width) рдпрд╛ setHeight(height) рддрд░реАрдХреЛрдВ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВ. (рдбрд╛рдпрд▓реЙрдЧ рдХрд╛ рд╢реБрд░реБрдЖрддреА рд╕рд╛рдЗрдЬрд╝ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, HtmlOutput
рддрд░реАрдХреЛрдВ
setWidth(width)
рдФрд░
setHeight(height) рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВ.)
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕рд╛рдЗрдЬрд╝ рдмрджрд▓рдиреЗ рдкрд░, рдбрд╛рдпрд▓реЙрдЧ рдкреИрд░рдВрдЯ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдмреАрдЪ рдореЗрдВ рдирд╣реАрдВ рдЖрддреЗ рд╣реИрдВ. рд╕рд╛рде рд╣реА, рд╕рд╛рдЗрдбрдмрд╛рд░ рдХрд╛ рд╕рд╛рдЗрдЬрд╝ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛.
Google Workspace рдореЗрдВ рдбрд╛рдпрд▓реЙрдЧ рдмреЙрдХреНрд╕ рдФрд░ рд╕рд╛рдЗрдбрдмрд╛рд░ рдмрдВрдж рдХрд░рдирд╛
рдЕрдЧрд░ Google Docs, Sheets рдпрд╛ Forms рдореЗрдВ рдбрд╛рдпрд▓реЙрдЧ рдмреЙрдХреНрд╕ рдпрд╛ рд╕рд╛рдЗрдбрдмрд╛рд░ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, HTML рд╕реЗрд╡рд╛ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ window.close() рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдмрдВрдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛. рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЖрдкрдХреЛ google.script.host.close() рдкрд░ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛.
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Google Workspace рдХреЗ рдпреВрдЬрд╝рд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рддреМрд░ рдкрд░ рдПрдЪрдЯреАрдПрдордПрд▓ рджрд┐рдЦрд╛рдирд╛ рд╕реЗрдХреНрд╢рди рджреЗрдЦреЗрдВ.
Google Workspace рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдлрд╝реЛрдХрд╕ рдХреЛ рдореВрд╡ рдХрд░рдирд╛
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ, рдбрд╛рдпрд▓реЙрдЧ рдпрд╛ рд╕рд╛рдЗрдбрдмрд╛рд░ рд╕реЗ рдлрд╝реЛрдХрд╕ рдХреЛ рд╡рд╛рдкрд╕ Google Docs, Sheets рдпрд╛ Forms рдПрдбрд┐рдЯрд░ рдкрд░ рд▓реЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, google.script.host.editor.focus() рддрд░реАрдХреЗ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ.
рдпрд╣ рддрд░реАрдХрд╛, рдЦрд╛рд╕ рддреМрд░ рдкрд░ Document service рдХреЗ рддрд░реАрдХреЛрдВ Document.setCursor(position) рдФрд░ Document.setSelection(range) рдХреЗ рд╕рд╛рде рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдиреЗ рдкрд░ рдЬрд╝реНрдпрд╛рджрд╛ рдлрд╝рд╛рдпрджреЗрдордВрдж рд╣реЛрддрд╛ рд╣реИ.