Google рдбреЙрдХреНрд╕ рдРрдб-рдСрдиред Google рдбреЙрдХреНрд╕ рд╕рдВрдкрд╛рджрдХ рдХреА рд╢рдХреНрддрд┐ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛

рджреВрд╕рд░реЗ рджрд┐рди, Google рдиреЗ рдПрдХ рдирдпрд╛ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рдШреЛрд╖рдгрд╛ рдХреА рдЬреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ Google рдбреЙрдХреНрд╕ рдХреЗ рдЕрдВрджрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдФрд░ Google рдбреЙрдХреНрд╕ рд╕рдВрдкрд╛рджрдХ рдХреА рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЖрдЗрдП рдЬрд╛рдиреЗрдВ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИ, рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдЫреЛрдЯрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦреЗрдВ рдЬреЛ рд╣рдореЗрдВ Google рдбреЙрдХреНрд╕ рдХреЛ рдЫреЛрдбрд╝реЗ рдмрд┐рдирд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдкрд╛рда рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

рд╕рд┐рджреНрдзрд╛рдВрдд рдХреА рдПрдХ рдмрд┐рдЯред

Google рдбреЙрдХреНрд╕ рдРрдб-рдСрди - рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди, рдЬреЛ Google рдбреНрд░рд╛рдЗрд╡ рдореЗрдВ рдореМрдЬреВрджрд╛ рдФрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ (рдЕрдм рдХреЗрд╡рд▓ Google рдбреЙрдХреНрд╕ рдХреЗ рд▓рд┐рдП), рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рджрд╛рдИрдВ рдУрд░ рдЕрдкрдирд╛ UI ('рд╕рд╛рдЗрдбрдмрд╛рд░' рдпрд╛ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ) рд╣реЛрдиреЗ рд╕реЗ Google рдбреЙрдХреНрд╕ рд╕рдВрдкрд╛рджрдХ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реЛрддрд╛ рд╣реИ ред Google рдбреЙрдХреНрд╕ рдРрдб-рдСрди, Google Apps рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдЕрдЧрд▓рд╛ рдЪрд░рдг рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ Google Apps рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ Google рдбреЙрдХреНрд╕ рдХреЗ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЗрд╕реЗ рд╡рд┐рддрд░рд┐рдд рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред

рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ Google Apps рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИрдВ, рдореБрдЦреНрдп рд╣реИрдВ Google рдбреНрд░рд╛рдЗрд╡ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ (Google рдбреНрд░рд╛рдЗрд╡ рдореЗрдВ рдЖрдк рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓, 'рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ' рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ) рдпрд╛ рдПрдХ рдХрдВрдЯреЗрдирд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ ( 'рдХрдВрдЯреЗрдирд░-рдмрд╛рдЙрдВрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ' ) рдХреЗ рд╕рд╛рде рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрдВрдЯреЗрдирд░, рдореЗрдиреВ 'рдЯреВрд▓реНрд╕' -> 'рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдбрд┐рдЯрд░' рдЦреЛрд▓рдХрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред Google рдбреЙрдХреНрд╕ рдРрдб-рдСрди рд╕рд┐рд░реНрдл рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдХрдВрдЯреЗрдирд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдк рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗред

рд╡рд┐рд╕реНрддрд╛рд░

Chrome рд╡реЗрдм рд╕реНрдЯреЛрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Google рдбреЙрдХреНрд╕ рдРрдб-рдСрди рджреНрд╡рд╛рд░рд╛ рд╡рд┐рддрд░рд┐рдд (рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реЗ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдирд╣реАрдВ рд╣реИрдВ)ред Chrome рд╡реЗрдм рд╕реНрдЯреЛрд░ рдореЗрдВ рдЕрдкрдирд╛ рдРрдб рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ Google рджреНрд╡рд╛рд░рд╛ рд╕рдореАрдХреНрд╖рд╛ рд╕реЗ рдЧреБрдЬрд░рдирд╛ рд╣реЛрдЧрд╛ред Google рдбреЙрдХреНрд╕ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рд╕рднреА рдРрдб-рдСрди рдПрдХ рдирдП рдореЗрдиреВ рдЖрдЗрдЯрдо - 'рдРрдб-рдСрди' -> 'рдРрдб-рдСрди' рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВред

рд╡рд┐рдХрд╛рд╕ рдХрд╛ рд╡рд╛рддрд╛рд╡рд░рдг

Google Apps рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП, Google Google рдбрд┐рд╕реНрдХ рдореЗрдВ рдПрдХреАрдХреГрдд рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЪрд▓рд╛рдиреЗ, рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдФрд░ рдХреЛрдб рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдХреНрдпрд╛ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рдХреЛрдб рдХреЛ Google рдбреНрд░рд╛рдЗрд╡ рдореЗрдВ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ CVS рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ? рдпрд╣ рдХрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдФрд░ рд╡рд░реНрдЬрдирд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред 'рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди' рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП 'рдХрдВрдЯреЗрдирд░-рд╕реАрдорд╛' рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдЕрд╡рд╕рд░ рд╣реИ - рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдЕрднреА рддрдХ рдирд╣реАрдВред рдЗрд╕рд▓рд┐рдП, Google рдбреЙрдХреНрд╕ рдРрдб-рдСрди рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рдПрдХреАрдХреГрдд рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣рд╛рдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд╛рдпрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХ "рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди" рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ "рдкрдВрдк рдЖрдЙрдЯ" рдХрд░рдиреЗ рдФрд░ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рдж Google рдбреНрд░рд╛рдЗрд╡ рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдЕрдВрджрд░ рдХреНрдпрд╛ рд╣реИ

Google Apps рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ "рд╕рд░реНрд╡рд░" (.gs) рдФрд░ "рдХреНрд▓рд╛рдЗрдВрдЯ" (.html) рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВред "рд╕рд░реНрд╡рд░" рднрд╛рдЧ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ рдЬреЛ рдЙрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдПрдкреАрдЖрдИ рд╕рд╣рд┐рдд рддреГрддреАрдп-рдкрдХреНрд╖ рд╕реЗрд╡рд╛рдУрдВ , рд╡рд┐рднрд┐рдиреНрди Google API (рдбреНрд░рд╛рдЗрд╡, GMail, рдХреИрд▓реЗрдВрдбрд░) рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдРрдб-рдСрди рд╕реНрдерд╛рдкрд┐рдд рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ '.gs' рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдлрд╝рдВрдХреНрд╢рди рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдРрдб-рдСрди рд╕реЗрдЯ / рдУрдкрди рдХрд░рдиреЗ рдкрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдорд╛рдирдХ Google рдбреЙрдХреНрд╕ рд╕рдВрдкрд╛рджрдХ рдХреЗ рдЕрдВрджрд░ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ UI рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдмрджрд▓реЗ рдореЗрдВ, "рдХреНрд▓рд╛рдЗрдВрдЯ рднрд╛рдЧ" рдПрдХ рдорд╛рдирдХ HTML рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХрд┐рд╕реА рднреА "рд╕рд░реНрд╡рд░" рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдХрд┐рд╕реА рднреА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдФрд░ рдпрд╣ рднреА, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рддреГрддреАрдп-рдкрдХреНрд╖ рд╕реАрдПрд╕рдПрд╕ / рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рдеред

рдЙрджрд╛рд╣рд░рдг

рд╣рдо рдПрдХ рдЖрд╡реЗрджрди рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬреЛ рдЪрдпрдирд┐рдд рдкрд╛рда рдХреЛ рдЕрдВрдЧреНрд░реЗрдЬреА рд╕реЗ рд░реВрд╕реА рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░реЗрдЧрд╛ред Google рдбрд┐рд╕реНрдХ рдореЗрдВ рдПрдХ рдирдпрд╛ Google рдбреЙрдХреНрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрдирд╛рдПрдВ, рдореЗрдиреВ рдЦреЛрд▓реЗрдВ - 'рдЯреВрд▓реНрд╕' -> 'рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдбрд┐рдЯрд░'ред рдЬреЛ рдбрд╛рдпрд▓реЙрдЧ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдЙрд╕рдореЗрдВ 'Create script for -> Document' рдЪреБрдиреЗрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рдмрд╣реБрдд рдПрдХреАрдХреГрдд рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдг рджреЗрдЦреЗрдВрдЧреЗред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдлрд╝рд╛рдЗрд▓ 'Code.gs' Google рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдпреБрдХреНрдд рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред рд╣рдореЗрдВ рдЕрднреА рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рддреБрд░рдВрдд рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ, рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ 'Server.gs' рдХрд░ рджреЗрддрд╛ рд╣реВрдВред 'рдЕрдирдЯрд╛рдЗрдЯрд▓реНрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ' рд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛ рддреБрд░рдВрдд рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛, 'рдЯреНрд░рд╛рдВрд╕рд▓реЗрдЯ рдЙрджрд╛рд╣рд░рдг' рдореЗрдВ рдХрд╣реЗрдВред

рдЗрд╕рд▓рд┐рдП, 'Server.gs' рдореЗрдВ рд╣рдо рдЙрди рдлрдВрдХреНрд╢рдиреНрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдРрдб-рдСрди рдХрд╛ UI рдмрдирд╛рдПрдВрдЧреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ 'onOpen' рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВред
function onOpen() { DocumentApp.getUi().createAddonMenu() .addItem('Translate', 'openSidebar') .addToUi(); } function openSidebar( ) {} 


рдЕрдм, рдЬрдм рдЖрдк рдЙрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдЦреЛрд▓рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдРрдб-рдСрди рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рддреЛ рд╡рд┐рд╢реЗрд╖ 'рдРрдб-рдСрди' рдореЗрдиреВ рдореЗрдВ 'рдЕрдиреБрд╡рд╛рдж' рдЖрдЗрдЯрдо рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдЗрд╕ рдореЗрдиреВ рдЖрдЗрдЯрдо рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рд╕реЗ 'рдУрдкрдирд╕рд╛рдЗрдбрдмрд╛рд░' рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдЕрднреА рддрдХ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕реЗ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рдХрд╛рд╕ рдХреЗ рдорд╛рд╣реМрд▓ рдореЗрдВ, "рдСрдирдСрди" рдлрд╝рдВрдХреНрд╢рди рдЪреБрдиреЗрдВ рдФрд░ 'рд░рди' рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред


рдЕрдм рдЖрдкрдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдореЗрдиреВ рдЖрдЗрдЯрдо 'Add-ons' -> 'рдЕрдиреБрд╡рд╛рдж рдЙрджрд╛рд╣рд░рдг' (рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд╛рдо) -> 'рдЕрдиреБрд╡рд╛рдж'

рдЖрдЗрдП рд╣рдорд╛рд░реЗ рдРрдб-рдСрди рдХреЗ рд▓рд┐рдП рдпреВрдЖрдИ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред рдЪреВрдВрдХрд┐ UI рдРрдб-рдСрди рдПрдХ html рдкреЗрдЬ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ HTML рдорд╛рд░реНрдХрдЕрдк, рд╕реАрдПрд╕рдПрд╕ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рддреБрд░рдВрдд рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо 'Sidebar.html', 'Styles.html', 'Scripts.html' рдФрд░ 'Content.html' рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрдирд╛рдПрдБрдЧреЗред 'рд╕рд╛рдЗрдбрдмрд╛рд░.html' рдПрдХ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдлрд╛рдЗрд▓ рд╣реЛрдЧреА рдЬрд┐рд╕рдореЗрдВ рдмрд╛рдХреА рдлрд╛рдЗрд▓реЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред



рд╕рднреА рдРрдб-рдСрди рдХреЗ UI рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдЯрд╛рдЗрд▓ рдЧрд╛рдЗрдб рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП Google рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реАрдПрд╕рдПрд╕ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕ рд▓рд┐рдВрдХ рдХреЛ рдЖрдк рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВред

'Content.html' рдФрд░ 'Styles.html' рдЦреЛрд▓реЗрдВ рдФрд░ рдорд╛рд░реНрдХрдЕрдк рдмрдирд╛рдПрдБ
 <div class="content"> <p>Select text and click 'Translate'</p> <button class="action btn-block">Translate</button> <p class="result"></p> </div> 

рдФрд░ рд╢реИрд▓рд┐рдпреЛрдВ
 <style> .content { padding: 20px; margin : 20px; } .btn-block { display: block; width: 100%; padding-left: 0; padding-right: 0; } </style> 

рдФрд░ 'Server.gs' рдореЗрдВ рд╣рдо 'openSidebar' рдлрдВрдХреНрд╢рди рдХреА рдмреЙрдбреА рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
 function onOpen() { DocumentApp.getUi().createAddonMenu() .addItem('Translate', 'openSidebar') .addToUi(); } function openSidebar( ) { var html = HtmlService.createTemplateFromFile('Sidebar') .evaluate() .setSandboxMode(HtmlService.SandboxMode.NATIVE) .setTitle('Translate example') .setWidth(300); DocumentApp.getUi().showSidebar(html); } 

рдЕрдм, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ "рдЕрдиреБрд╡рд╛рдж" рдореЗрдиреВ рдЖрдЗрдЯрдо рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ, рдмрд╛рдИрдВ рдУрд░, 'рд╕рд╛рдЗрдбрдмрд╛рд░' рдЦреБрд▓реЗрдЧрд╛ред

рдпрд╣ рдкрд╛рда рдХреЛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рдЬреЛрдбрд╝рдирд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо '.gs' рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╡рд┐рднрд┐рдиреНрди Google рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдФрд░ рд╣рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдЪрдпрдирд┐рдд рдкрд╛рда рдХреЛ рдЦреЛрдЬрдиреЗ рдФрд░ рдЪрдпрдирд┐рдд рднрд╛рд╖рд╛ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВрдЧреЗред
'Server.gs'
 function translate(pollingCounter) { var text = getSelectedText(getSingleSeletetedElement()); if (text) { return LanguageApp.translate(text, 'en', 'ru'); } } function getSelectedText(rangeElement) { if (!rangeElement) { return; } var element = rangeElement.getElement(); var from = rangeElement.getStartOffset(); var to = rangeElement.getEndOffsetInclusive() + 1; if (element.getType() === DocumentApp.ElementType.TEXT || element.getType() === DocumentApp.ElementType.PARAGRAPH) { var text = element.getText(); return text.substring(from, to); } } function getSingleSeletetedElement() { var selection = DocumentApp.getActiveDocument().getSelection(); if (selection) { var elements = selection.getSelectedElements(); if (elements.length === 1) { return elements[0]; } } } 

'рдЯреНрд░рд╛рдВрд╕рд▓реЗрдЯ' рдлрдВрдХреНрд╢рди рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рдореЗрдВ рдЪрдпрдирд┐рдд рддрддреНрд╡ рдХреЛ рдЦреЛрдЬрддрд╛ рд╣реИ, рдФрд░ рдЕрдЧрд░ рдпрд╣ рдЯреЗрдХреНрд╕реНрдЯ рдпрд╛ рдЯреЗрдХреНрд╕реНрдЯ рдмреНрд▓реЙрдХ рд╣реИ, рддреЛ рдпрд╣ рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рдЪреБрдиреЗ рд╣реБрдП рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЕрдВрдЧреНрд░реЗрдЬреА рд╕реЗ рд░реВрд╕реА рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИред рдЕрдм рд╣рдореЗрдВ рдЕрдкрдиреЗ UI рд╕реЗ рдХрд┐рд╕реА рддрд░рд╣ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП, 'рд╕рд╛рдЗрдбрдмрд╛рд░' рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреА рд╡реИрд╢реНрд╡рд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯ 'google.script.run' рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдХрд┐рд╕реА рднреА '.gs' рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдХрд┐рд╕реА рднреА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
'Scripts.html'
  $(function() { $('.action').click(function() { google.script.run.withSuccessHandler(function(text) { if (text) { $('.result').text('Result: ' + text); } else { $('.result').text('Please, select text to translate'); } }).translate(); }); }); 

рд╣реЛ рдЧрдпрд╛, рдЕрдм рд╣рдорд╛рд░рд╛ рдРрдб-рдСрди 'рдЯреНрд░рд╛рдВрд╕рд▓реЗрдЯ' рдХреБрдВрдЬреА рджрдмрд╛рдХрд░ рдЪрдпрдирд┐рдд рдЯреЗрдХреНрд╕реНрдЯ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЖрдк рд╕реАрдзреЗ 2 рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЬрдм рдЖрдк 'рд╕рд╛рдЗрдбрдмрд╛рд░' рдЦреЛрд▓рддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ рд▓реЛрдб рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ, рддреЛ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓реЛрдбрд┐рдВрдЧ рд╕рдВрдХреЗрддрдХ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред 'Loading.html' рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ, рд╣рдорд╛рд░реЗ 'рд╕рд╛рдЗрдбрдмрд╛рд░.html' рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдЬреЛрдбрд╝реЗрдВ, рдФрд░ рдореБрдЦреНрдп рд╕рд╛рдордЧреНрд░реА рдХреЛ рддрдм рддрдХ рдЫрд┐рдкрд╛рдПрдБ рдЬрдм рддрдХ рдХрд┐ рд╕рднреА рд╕рдВрд╕рд╛рдзрди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓реЛрдб рди рд╣реЛ рдЬрд╛рдПрдБред рдПрдХ рдмрд╛рд░ рдЬрдм рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рд╕рдВрдХреЗрддрдХ рдЫрд┐рдкрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдирд╛ UI рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред
'Loading.html'
 <div class="app-loading" style="text-align:center"> <br><br><br><br><br><br> Loading... </div> 

Content.html
 <div class="content" style="display:none"> <p>Select text and click 'Translate'</p> <button class="action btn-block">Translate</button> <p class="result"></p> </div> 

Sidebar.html
 <!-- styles --> <link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons.css"> <?!= HtmlService.createHtmlOutputFromFile('Styles').getContent(); ?> <!-- layout --> <?!= HtmlService.createHtmlOutputFromFile('Loading').getContent(); ?> <?!= HtmlService.createHtmlOutputFromFile('Content').getContent(); ?> <!--3rd party scripts --> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <!-- application scripts --> <?!= HtmlService.createHtmlOutputFromFile('Scripts').getContent(); ?> 

рдФрд░ рдЖрдЦрд┐рд░рдХрд╛рд░ Scripts.html рдореЗрдВ
  $(function() { $('.app-loading').hide(); $('.content').show(); $('.action').click(function() { google.script.run.withSuccessHandler(function(text) { if (text) { $('.result').text('Result: ' + text); } else { $('.result').text('Please, select text to translate'); } }).translate(); }); }); 

рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, 'рдЯреНрд░рд╛рдВрд╕рд▓реЗрдЯ' рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд┐рдП рдмрд┐рдирд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕реЗ рдЪрдпрдирд┐рдд рдкрд╛рда рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ Google рдбреЙрдХреНрд╕ рдПрдб-рдСрди рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореМрдЬреВрдж рд╕реАрдорд╛рдУрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдХреЛрдИ рднреА рдШрдЯрдирд╛ рдореЙрдбрд▓ рдирд╣реАрдВ рд╣реИ рдЬреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП Google рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдРрдб-рдСрди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рд╣рдореЗрдВ рдпреВрдЖрдИ рд╕реЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдкреЛрд▓рд┐рдВрдЧ - рдирд┐рд░рдВрддрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдРрдб-рдСрди рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рд╢реАрд▓рддрд╛ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рд╣рдорд╛рд░реЗ 'Server.gs' рдХреЛ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рдиреЗ рдФрд░ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░реЗрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо 'Script.html' рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд╕рд╛рде 2 рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рд╢реБрд░реВ рдХрд░реЗрдЧрд╛ред рдкрд╣рд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ 'рдЕрдиреБрд╡рд╛рдж' рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧреА рдФрд░ рдЕрдиреБрд╡рд╛рдж рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╕рд╣реЗрдЬреЗрдЧреАред рджреВрд╕рд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрд╡рд╛рдж рдкрд░рд┐рдгрд╛рдо рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдЧреА рдФрд░ UI рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдЧреАред
'Scripts.html'
  var LongPollingManager = (function() { var process = function(options) { var pollingTimeout = 1500, notificationTimeout = 1500, pollingCounter = 0, pollingStopped = false, pollingResult, pollingProcess, notificationProcess; var start = function() { pollingStopped = false; pollingProcess = setInterval(function() { if (pollingStopped) { return; } pollingCounter++; google.script.run.withSuccessHandler(function(response) { if (pollingStopped) { return; } if (!pollingResult || response.pollingCounter > pollingResult.pollingCounter) { pollingResult = response; } })[options.method](pollingCounter); }, pollingTimeout); setTimeout(function() { notificationProcess = setInterval(function() { if (pollingStopped) { return; } options.notification(getLastResult()); }, notificationTimeout); }, notificationTimeout/2); }; var getLastResult = function() { return pollingResult; }; var stop = function() { pollingResult = null; pollingStopped = true; clearInterval(pollingProcess); clearInterval(notificationProcess); }; return { start: start, stop : stop, isActive: function() { return !pollingStopped; }, getLastResult : getLastResult };; }; return { process: process }; })(); var showResult = function(result) { if (result && result.text) { $('.result').text('Result: ' + result.text); } else { $('.result').text(''); } }; $(function() { $('.loading').hide(); $('.content').show(); $('.action').click(function() { google.script.run.withSuccessHandler(function(text) { if (text) { $('.result').text('Result: ' + text); } else { $('.result').text('Please, select text to translate'); } }).translate(); }); LongPollingManager.process({ method: 'translate', notification: showResult }).start(); }); 

'Server.gs'
 function translate(pollingCounter) { var result = { pollingCounter : pollingCounter }; var text = getSelectedText(getSingleSeletetedElement()); if (text) { result.text = LanguageApp.translate(text, 'en', 'ru'); } return result; } 


рд╣реЛ рдЧрдпрд╛, рдЕрдм рд╣рдорд╛рд░рд╛ рдРрдб-рдСрди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЪрдпрдирд┐рдд рдЯреЗрдХреНрд╕реНрдЯ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИред
Google рдбреНрд░рд╛рдЗрд╡ рдкрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ + рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛрдб
рдЧрд┐рдердм рдХреЛрдб



рдирд┐рд╖реНрдХрд░реНрд╖

рддреЛ, Google рдбреЙрдХреНрд╕ рдРрдб-рдСрди рдПрдХ рдирдпрд╛ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЙрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдореВрд▓ Google рдбреЙрдХреНрд╕ рд╕рдВрдкрд╛рджрдХ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред
рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖:


рдкреБрдирд╢реНрдЪ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдордПрд╕ рдСрдлрд┐рд╕ рдФрд░ Google рдбреНрд░рд╛рдЗрд╡ рдХреЗ рдмреАрдЪ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдореЗрдВ, Google рдиреЗ рд╕рд╛рджрдЧреА, рд╕реБрд╡рд┐рдзрд╛ рдФрд░ рдбреЗрд╡рд▓рдкрд░ рд╕рдореБрджрд╛рдп рдкрд░ рджрд╛рдВрд╡ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдореИрдВ рдПрдордПрд╕ рд╡рд░реНрдб рдмрдирд╛рдо рдЧреБрдбрд▓ рдбреЙрдХреНрд╕ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдмрддрд╛рдКрдВрдЧрд╛ред MS Word рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХрд╛рд░реНрдп рдЙрдкрд▓рдмреНрдз рд╣реИрдВ (рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдПрдХ рдЕрддрд┐рднрд╛рд░рд┐рдд рдФрд░ рдЬрдЯрд┐рд▓ UI) рдФрд░ рдПрдХ рдЦреБрд▓рд╛ рдПрдкреАрдЖрдИ рдирд╣реАрдВ рд╣реИред Google рдбреЙрдХреНрд╕ - рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЙрдкрдХрд░рдг рдХрд╛ рдиреНрдпреВрдирддрдо рдЖрд╡рд╢реНрдпрдХ рд╕реЗрдЯ рдФрд░ рдПрдХ рдУрдкрди рдПрдкреАрдЖрдИ рд╣реИред рдЕрдм рдЖрдк Google рдбреЙрдХреНрд╕ рдРрдб-рдСрди рдЧреИрд▓рд░реА рдореЗрдВ рдХрд┐рд╕реА рднреА рдлрд╝рдВрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдиреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдХреЗрд╡рд▓ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рдирдХреА рдЙрд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

Source: https://habr.com/ru/post/In215843/


All Articles