рдЕрдкрдиреА рд╢рд╛рджреА рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд╡рд┐рд▓рд┐рдпреЛ, рдкрд╛рдпрдерди рдФрд░ Google рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ

рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ рдиреЗ рдмрддрд╛рдпрд╛ рдХрд┐ рдХреИрд╕реЗ рд╡рд╣ рдЕрдкрдиреА рд╢рд╛рджреА рдХреА рдШрдЯрдирд╛ рдХреА рдирд┐рдпрдорд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреМрд╢рд▓ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗред

рдЬреНрдпрд╛рджрд╛рддрд░ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, 3 рд╕рд┐рддрдВрдмрд░, 2016 рд╕рдмрд╕реЗ рдЖрдо рд╢рдирд┐рд╡рд╛рд░ рдерд╛, рд▓реЗрдХрд┐рди рдореЗрд░реА рдпрд╛рдж рдореЗрдВ рдпрд╣ рддрд╛рд░реАрдЦ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рд░рд╣реЗрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рджрд┐рди рдореЗрд░реА рдкрддреНрдиреА рдФрд░ рдореИрдВрдиреЗ рд╢рд╛рджреА рдЦреЗрд▓реА рдереАред

рдЫрд╡рд┐

рд╢рд╛рджреА рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдХрдИ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ: рднреЛрдЬрди, рд╕рдЬрд╛рд╡рдЯ рдФрд░ рд╕рдЬрд╛рд╡рдЯ, рдЯреЗрдмрд▓ рд▓реИрдВрдк (рд╣рд╛рдБ, рд╕рдЬрд╛рд╡рдЯ рд╕реЗ рдЕрд▓рдЧ), рдлреВрд▓, рдЕрддрд┐рдерд┐ рдЖрд╡рд╛рд╕, рдкрд░рд┐рд╡рд╣рди, рдордиреЛрд░рдВрдЬрди рдФрд░ рд╕реНрдерд▓ рдХреА рдкрд╕рдВрджред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╢рд╛рджреА рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдкрдХрд╛ рд╕рд╛рдордирд╛ рдХрдИ рдЕрдЬреНрдЮрд╛рдд рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрдХ рдмрд╛рдд рдХрд╛ рдпрдХреАрди рдерд╛: рдХреЛрдИ рднреА рд╢рд╛рджреА рдкреВрд░реА рд╕реВрдЪреА рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА, рдиреЗрд╕реНрдЯреЗрдб рд╕реВрдЪрд┐рдпрд╛рдВ рдЬреЛ рдмрд╣реБрдд рдЕрдВрдд рддрдХ рдЦрддреНрдо рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВред рдЬрд┐рддрдиреА рдЕрдзрд┐рдХ рд╕реВрдЪрд┐рдпрд╛рдБ рдореЗрд░реА рдЖрдБрдЦреЛрдВ рдХреЗ рд╕рд╛рдордиреЗ рддреИрд░рддреА рд╣реИрдВ, рдЙрддрдиреА рдмрд╛рд░ рдореИрдВ рд╕реЛрдЪрдиреЗ рд▓рдЧрд╛ рдХрд┐ рддреИрдпрд╛рд░реА рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреИрд╕реЗ рдмреЗрд╣рддрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред рдпрд╣ рджрд░реНрджрдирд╛рдХ рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рдерд╛ рдФрд░ рд╕рднреА рдХрд╛рдо рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрд┐рдП рдЧрдП рдереЗред рдореБрдЭреЗ рдпрдХреАрди рдерд╛ рдХрд┐ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреА рд╣реИред

рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдирдХрд░ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд▓реЛрдЧреЛрдВ рдХреЛ рд╢рд╛рджреА рдореЗрдВ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рдирд╛ рдорд╣рдВрдЧрд╛ рд╣реИ (рдкреНрд░рддрд┐ рд╡реНрдпрдХреНрддрд┐ 380 рдкрд╛рдЙрдВрдб рд╕реЗ рдЕрдзрд┐рдХ)ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдПрдХ рддрд╛рд░реАрдЦ рдФрд░ рдПрдХ рдЫреЛрдЯреА рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдирд┐рдордВрддреНрд░рдг рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА - рдкреВрд░реНрдг рд╡рд┐рд╡рд░рдг, рдШрдЯрдирд╛ рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рдеред рдпрд╣ рд╕рдм, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореЗрд▓ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рдзреАрдорд╛ рд╣реИред рдЖрдордВрддреНрд░рд┐рддреЛрдВ рдХреЛ "рдкрдХрдбрд╝рдиреЗ" рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдФрд░ рдЙрдирд╕реЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╡рд╛рдм рдорд┐рд▓рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡реЗ рдореБрдлреНрдд рдореЗрдВ рдЦрд╛рдирд╛ рдФрд░ рдкреАрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдЬреЛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ!) рдмрд╣реБрдд рд╕рдордп рд▓реЗрддреЗ рд╣реИрдВред рдФрд░ рдЕрдВрдд рдореЗрдВ, рдирд┐рдордВрддреНрд░рдг рднреЗрдЬрдирд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдЕрдиреБрдХреВрд▓ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреЗрдкрд░ рдХрд╛рд░реНрдб рдПрдХ рдмрд╛рд░ рдХреА рдмрд╛рдд рд╣реИ, рд╡реЗ рдЬрд▓реНрджреА рд╕реЗ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдмреЗрдХрд╛рд░ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

рд▓реЗрдХрд┐рди рд╕реВрдЪреА рдореЗрдВ рд╡рд╛рдкрд╕ред рд╣рдо рдореЗрд╣рдорд╛рдиреЛрдВ рдХреЛ рдХрдИ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

  1. рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рддреНрдпреМрд╣рд╛рд░ рдкрд░ рджреЗрдЦрдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ
  2. рдЬрд┐рди рд▓реЛрдЧреЛрдВ рдиреЗ рджреВрд╕рд░реЗ рдирд┐рдордВрддреНрд░рдг рдХрд╛ рдЬрд╡рд╛рдм рджрд┐рдпрд╛, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЬрд╡рд╛рдм рдорд╛рдВрдЧрд╛
  3. рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдирд┐рдордВрддреНрд░рдг рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛
  4. рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдирд┐рдордВрддреНрд░рдг рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдФрд░ рднреЛрдЬрди рдХреЛ рдЪреБрдирд╛

рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕реВрдЪрд┐рдпрд╛рдВ рдкрд╕рдВрдж рд╣реИрдВ: рдЙрдирдХреА рдХреБрдЫ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рд╣реИрдВ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рд╛рди рд╡рд╕реНрддреБ рдореЗрдВ рдмрджрд▓ рджреЗрддреА рд╣реИрдВред

рд╕рдВрджреЗрд╢ рдПрдХ рдмреЛрддрд▓ рдореЗрдВ


рдореБрдЭреЗ рдпрдХреАрди рдерд╛ рдХрд┐ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдореЗрд╣рдорд╛рдиреЛрдВ, рдЙрдирдХреА рдЙрдореНрд░ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛, рдПрдХ рдореЛрдмрд╛рдЗрд▓ рдлреЛрди рдерд╛, рдЬрд┐рд╕рдХрд╛ рдорддрд▓рдм рдерд╛ рдХрд┐ рдЯреНрд╡рд┐рд▓рд┐рдпреЛ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рдерд╛ред рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рдореЗрд╢рд╛ рдЗрд╕реА GitHub рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ ред

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

рдкрд╣рд▓реЗ рд╕рдВрдХреЗрдд рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рддреАрди рд╕реНрддрдВрднреЛрдВ рд╡рд╛рд▓реА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдИ :

  • рдирд╛рдо (рдирд╛рдо)
  • TELEPHONE_NUMBER (рдлреЛрди рдирдВрдмрд░)
  • рдкреБрд╖реНрдЯрд┐рдХрд░рдг_рд╕реНрдЯреИрдЯрд╕ (рдкреБрд╖реНрдЯрд┐рдХрд░рдг рд╕реНрдерд┐рддрд┐)
  • рд╕рдВрдкрд░реНрдХ рд╡рд┐рд╡рд░рдг рдХреА рд╕реНрдерд┐рддрд┐
  • Message_count (рдЕрддрд┐рдерд┐ рдХреЛ рднреЗрдЬреЗ рдЧрдП рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХрд╛рдо рдЖрдИ)

рдореВрд▓ рдбреЗрдЯрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЗрд╕ рд╕реВрдЪреА рдХреЛ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЪрд▓рд╛рдпрд╛ , рдЬрд┐рд╕рдиреЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрддрд┐рдерд┐ рдХреЛ рдПрдХ рдПрд╕рдПрдордПрд╕ рднреЗрдЬрд╛, рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рдореЛрдмрд╛рдЗрд▓ рдирдВрдмрд░ рд╣реИ:

import json import time import gspread from oauth2client.client import SignedJwtAssertionCredentials from twilio.rest import TwilioRestClient #      #     json,    json_key = json.load(open('.json')) scope = ['https://spreadsheets.google.com/feeds'] credentials = SignedJwtAssertionCredentials(json_key['client_email'], json_key['private_key'].encode(), scope) gc = gspread.authorize(credentials) wks = gc.open("wedding_guests") #     workbook- wks_attendees = wks.get_worksheet(0) #     ACCOUNT_SID = 'TWILIO_ACCOUNT_SID' AUTH_TOKEN = 'TWILIO_AUTH_TOKEN' client = TwilioRestClient(ACCOUNT_SID, AUTH_TOKEN) #    ,   range    for num in range(2, 60): print "sleeping for 2 seconds" time.sleep(2) #         guest_number = wks_attendees.acell('B'+str(num)).value guest_name = wks_attendees.acell('A'+str(num)).value Message_body = <span class="pl-s"><span class="pl-k">u</span><span class="pl-pds">"</span><span class="pl-cce">\u2B50</span><span class="pl-pds">"</span></span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-k">u</span><span class="pl-pds">"</span><span class="pl-cce">\u2764</span><span class="pl-pds">"</span></span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-k">u</span><span class="pl-pds">"</span><span class="pl-cce">\u2B50</span><span class="pl-pds">"</span></span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-k">u</span><span class="pl-pds">"</span><span class="pl-cce">\u2764</span><span class="pl-pds">"</span></span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-k">u</span><span class="pl-pds">"</span><span class="pl-cce">\u2B50</span><span class="pl-pds">"</span></span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-k">u</span><span class="pl-pds">"</span><span class="pl-cce">\u2764</span><span class="pl-pds">"</span></span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-k">u</span><span class="pl-pds">"</span><span class="pl-cce">\u2B50</span><span class="pl-pds">"</span></span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-k">u</span><span class="pl-pds">"</span><span class="pl-cce">\u2764</span><span class="pl-pds">"</span></span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">"</span><span class="pl-cce">\n\n</span><span class="pl-pds">"</span></span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-k">u</span><span class="pl-pds">"</span><span class="pl-cce">\u2709</span><span class="pl-pds">"</span></span> <span class="pl-k">+</span><span class="pl-s"><span class="pl-pds">"</span> Save the date! <span class="pl-pds">"</span></span><span class="pl-k">+</span> <span class="pl-s"><span class="pl-k">u</span><span class="pl-pds">"</span><span class="pl-cce">\u2709</span><span class="pl-pds">"</span></span> <span class="pl-k">+</span><span class="pl-s"><span class="pl-pds">"</span><span class="pl-cce">\n\n</span>Lauren Pang and Thomas Curtis are delighted to invite you to our wedding.<span class="pl-cce">\n\n</span>Saturday 3rd September 2016. <span class="pl-cce">\n\n</span>Colville Hall,<span class="pl-cce">\n</span>Chelmsford Road,<span class="pl-cce">\n</span>White Roding,<span class="pl-cce">\n</span>CM6 1RQ.<span class="pl-cce">\n\n</span>The Ceremony begins at 2pm.<span class="pl-cce">\n\n</span>More details will follow shortly!<span class="pl-cce">\n\n</span>Please text YES if you are saving the date and can join us or text NO if sadly, you won't be able to be with us.<span class="pl-cce">\n\n</span><span class="pl-pds">"</span></span> <span class="pl-s"><span class="pl-k">u</span><span class="pl-pds">"</span><span class="pl-cce">\u2B50</span><span class="pl-pds">"</span></span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-k">u</span><span class="pl-pds">"</span><span class="pl-cce">\u2764</span><span class="pl-pds">"</span></span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-k">u</span><span class="pl-pds">"</span><span class="pl-cce">\u2B50</span><span class="pl-pds">"</span></span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-k">u</span><span class="pl-pds">"</span><span class="pl-cce">\u2764</span><span class="pl-pds">"</span></span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-k">u</span><span class="pl-pds">"</span><span class="pl-cce">\u2B50</span><span class="pl-pds">"</span></span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-k">u</span><span class="pl-pds">"</span><span class="pl-cce">\u2764</span><span class="pl-pds">"</span></span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-k">u</span><span class="pl-pds">"</span><span class="pl-cce">\u2B50</span><span class="pl-pds">"</span></span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-k">u</span><span class="pl-pds">"</span><span class="pl-cce">\u2764</span><span class="pl-pds">"</span></span>, if not guest_number: #      print guest_name + ' telephone number empty not messaging' wks_attendees.update_acell('E'+str(num), '0') else: print 'Sending message to ' + guest_name client.messages.create( to="+" + guest_number, #  +   e.164 from_="", #     Twillio body=message_body, ) wks_attendees.update_acell('E'+str(num), int(wks_attendees.acell('E'+str(num)).value) + 1) # increment the message count row else: # else-  print 'finished' 

рдФрд░ рдЪреВрдВрдХрд┐ рдЯреЗрдХреНрд╕реНрдЯ рдПрд╕рдПрдордПрд╕ рдЖрдорддреМрд░ рдкрд░ рдереЛрдбрд╝рд╛ рдЙрдмрд╛рдК рд▓рдЧрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдпреВрдирд┐рдХреЛрдб рдЬреЛрдбрд╝рд╛ред рдпрд╣ рд╕рдВрджреЗрд╢ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рдореЗрд╣рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

рдЫрд╡рд┐

рдЗрд╕рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдлреНрд▓рд╛рд╕реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛, рдЯреНрд╡рд┐рд▓рд┐рдпреЛ рдореИрд╕реЗрдЬрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдЯреВ / рдореИрд╕реЗрдЬ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ URL рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛, рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рдЬреЛрдбрд╝ рджрд┐рдпрд╛:

 @app.route("/messages", methods=['GET', 'POST']) def hello_guest():  if "yes" in body_strip:    #      confirmation_status    wks_attendees.update_acell("F"+str(guest_confirmation_cell.row), 'Accepted')  #    ┬л ┬╗       resp.message(u"\u2665" + "Thanks for confirming, we'll be in touch!" + u"\u2665")  # r ,    elif "no" in from_body.lower():    #    ┬л ┬╗       wks_attendees.update_acell("F"+str(guest_confirmation_cell.row), 'Declined')    #       resp.message("Sorry to hear that, we still love you though!")  else:  #  ,        resp.message("You sent a different keyword, we need a yes or a no, you sent: "+           from_body)  return str(resp) 

рдЫрд╡рд┐рдЫрд╡рд┐

рдкрд╣рд▓рд╛ рд╕рдВрджреЗрд╢ 19 рдлрд░рд╡рд░реА рдХреЛ рд╕реБрдмрд╣ 8:37 рдмрдЬреЗ рднреЗрдЬрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдкрд╣рд▓реА рдкреБрд╖реНрдЯрд┐ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж 8:40 рдкрд░ рдкреНрд░рд╛рдкреНрдд рд╣реБрдИ рдереАред 9:38 рддрдХ, рдореБрдЭреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 23 рдкреБрд╖реНрдЯрд┐рдХрд░рдг рдорд┐рд▓ рдЪреБрдХреЗ рдереЗ, рдЕрд░реНрдерд╛рдд, 32% рдЙрддреНрддрд░ рдореЗрд░реА рдЬреЗрдм рдореЗрдВ рдереЗ! рд╕рд╛рдореВрд╣рд┐рдХ рдбрд╛рдХ рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ 2 рджрд┐рди рдмрд╛рдж, 58% рдореЗрд╣рдорд╛рдиреЛрдВ рдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЕрдкрдиреА рднрд╛рдЧреАрджрд╛рд░реА рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░ рджреА рд╣реИред рд╕реНрдкрд╖реНрдЯ рд╕рдлрд▓рддрд╛ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдореЗрд░реА рднрд╛рд╡реА рдкрддреНрдиреА рдЕрднреА рддрдХ рд╢рд╛рджреА рдХреЗ рдирд┐рдордВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдПрд╕рдПрдордПрд╕ рд╕реЗрд╡рд╛ рд╕реЗ 100% рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реБрдИ рд╣реИ, рдФрд░ рдореИрдВрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдХреБрдЫ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИред

рдЖрдБрдХрдбрд╝реЗ! рдореИрдВ рдЕрдкрдиреА рдЕрдкрдХрдорд┐рдВрдЧ рдЕрддрд┐рдерд┐ рд╕реВрдЪреА рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдЕрдиреБрд░реЛрдз рдкрд░ рдпрд╣ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рд╕реЗ рдореЗрд░реА рднрд╛рд╡реА рджреБрд▓реНрд╣рди рдХреЛ рддреБрд░рдВрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓ рд╕рдХреЗред рдХреЛрдб рдХрд╛рдлреА рд╕рд░рд▓ рдирд┐рдХрд▓рд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдХрд╛рдЙрдВрдЯрд░реЛрдВ рдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреА рдереА, рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рднреА рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрд╕рдПрдордПрд╕ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЖрдпрд╛ рдерд╛:

 #    guest_confirmed = wks_attendees.acell('C70').value guest_unconfirmed = wks_attendees.acell('C71').value guest_no_response = wks_attendees.acell('C72').value guest_acceptance = wks_attendees.acell('C73').value elif "numbers" in from_body.lower():  #   ( - ,   )  resp.message("RSVP update:\n\nTotal Accepted: " + guest_confirmed         "\n\nTotal declined: " guest_unconfirmed "\n\nTotal no response: "+         guest_no_response + "\n\nTotal acceptance rate: " + guest_acceptance) 

рдЗрд╕ рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рднреЗрдЬреЗ рдЧрдП рдПрд╕рдПрдордПрд╕ рдХрд╛ рдЙрджрд╛рд╣рд░рдг:

рдЫрд╡рд┐

рдпрд╣ рдмрд╣реБрдд рд╕реБрдВрджрд░ рдирд╣реАрдВ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдЬрд╛рдирдХрд╛рд░реАрдкреВрд░реНрдг рд╣реИред

рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд▓реЙрд░реЗрди рдЕрдм рдЕрддрд┐рдерд┐ рд╕реВрдЪреА рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЕрдкрдбреЗрдЯ рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд╕рдХрддреА рдереА, рд╣рдореЗрдВ рдХрдИ рд╕рд┐рд░рджрд░реНрдж рд╕реЗ рдмрдЪрд╛рдПрдЧреАред рдирддреАрдЬрддрди, рдореБрдЭреЗ рдПрд╕рдПрдордПрд╕ рдХреЗ рд╡реНрдпрд╛рдкрдХ рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЙрд╕рд╕реЗ рдордВрдЬреВрд░реА рдорд┐рд▓реА, рдФрд░ рдЬрд▓реНрдж рд╣реА рдЗрд╕ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓рдЧрднрдЧ рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЬрд╣рд╛рдВ рдпрд╣ рд╕рдВрднрд╡ рдерд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдкрд╖реНрдЯ рдереЗ, рд╢рд╛рджреА рдХреА рд╕рд╛рдЗрдЯ рдХреЗ рд▓реЙрдиреНрдЪ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрд╕рдПрдордПрд╕ рд╕реВрдЪрдирд╛рдПрдВ рднреЗрдЬрдирд╛ (рд╡реИрд╕реЗ, рд╣реЗрд░реЛрдХреВ рдкрд░), рдпрд╛ рд╢рд╛рджреА рдХреЗ рдЙрдкрд╣рд╛рд░реЛрдВ рдХреА рд╕реВрдЪрд┐рдпреЛрдВ рдФрд░ рдХрдИ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЬреЛ рдореБрдЭреЗ рдЗрд╕ рджрд┐рди рдкрд░ рдЧрд░реНрд╡ рд╣реИред

рд╢рд╛рдирджрд╛рд░ рджрд╛рд╡рдд


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

рдореЗрд╣рдорд╛рдиреЛрдВ рдХреЗ рдирд╛рдо рд╕реЗ рджреЛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рдФрд░ рдирдИ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рдЪрдпрдирд┐рдд рд╡реНрдпрдВрдЬрдиреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдб рдореЗрдВ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдШрдВрдЯрд┐рдпрд╛рдБ рдФрд░ рд╕реАрдЯреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЬреИрд╕реЗ рд╣реА рдореИрдВ рдЙрдирдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЧрдпрд╛, рдореИрдВ рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛ рд╕рдХрддрд╛ рдерд╛, рдирд╡реАрдирддрдо рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдПрд╕рдПрдордПрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рдерд╛:

 import json import time import gspread from oauth2client.client import SignedJwtAssertionCredentials from twilio.rest import TwilioRestClient #     json,    json_key = json.load(open('')) scope = ['https://spreadsheets.google.com/feeds'] credentials = SignedJwtAssertionCredentials(json_key['client_email'],                      json_key['private_key'].encode(),                      scope) gc = gspread.authorize(credentials) wks = gc.open("")  #      wks_attendees = wks.get_worksheet(0)  #   wks_food = wks.get_worksheet(1)  #    ACCOUNT_SID = 'TWILIO_ACCOUNT_SID' AUTH_TOKEN = 'TWILIO_AUTH_TOKEN' client = TwilioRestClient(ACCOUNT_SID, AUTH_TOKEN) #   . -       for num in range(2, 60):  food_guest_name = wks_food.acell('B'+str(num)).value  #        if food_guest_name:    attendees_name = wks_attendees.find(val_food_guest_name).value    attendees_name_row = wks_attendees.find(val_food_guest_name).row    menu_status = wks_attendees.acell("G"+str(attendees_name_row)).value    if food_guest_name == attendees_name:      print      if menu_status == 'Y':  #   ,          print('Skipping')      else:  #    ,           print ('Food sheet name ' + food_guest_name + 'Attendees sheet name ' + attendees_name)        #            wks_attendees.update_acell("G"+str(attendees_name_row), 'Y')    else:      print('nothing found, moving on')      wks_attendees.update_acell('E'+str(num), int(wks.acell('E'+str(num)).value) + 1)  #      else:    #           client.messages.create(from_="",  #  Twillio                to="",  #                  body="Finished processing current meal listnnGuest meals confirmed" + guest_meals_confirmed + "\n\nGuest meals unconfirmed: " + guest_meals_unconfirmed) 

рдЕрдм рдЬрдм рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдЯреАрдХ рдЕрддрд┐рдерд┐ рд╕реВрдЪреА рдФрд░ рд╡реНрдпрдВрдЬрдиреЛрдВ рдХреА рд▓рдЧрд╛рддрд╛рд░ рдЕрджреНрдпрддрди рд╕реВрдЪреА рдереА, рддреЛ рдореБрдЦреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрди рдЖрдВрдХрдбрд╝реЛрдВ рдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрдпрд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдПрд╕рдПрдордПрд╕ рдЬрд╡рд╛рдм рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдерд╛:

 #           elif "food" in body_strip.strip():  resp.message("Guest meals decided:" + guest_meals_confirmed + "\nGuest meals undecided: " + guest_meals_unconfirmed + "\n\nMenu breakdown:\n\n" + starter_option_1 +": " + starter_option_1_amount + "\n" + starter_option_2 +": " + starter_option_2_amount + "\n" + starter_option_3 +": " + starter_option_3_amount + "\n" + main_option_1 +": " + main_option_1_amount + "\n" + main_option_2 +": " + main_option_2_amount + "\n" + main_option_3 +": " + main_option_3_amount + "\n" + dessert_option_1 + ": " + dessert_option_1_amount + "\n" + dessert_option_2 + ": " + dessert_option_2_amount) 

рдЫрд╡рд┐

рдпрд╣ рдЙрдкрд╛рдп рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдирд┐рдХрд▓рд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдиреЗ рдЫреБрдЯреНрдЯреА рдХреА рд╕реЗрд╡рд╛ рджреЗрдиреЗ рд╡рд╛рд▓реА рдХрдВрдкрдиреА рдХреЛ рд╣рдорд╛рд░реА рдкреНрд░рдЧрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдФрд░ рдЙрди рд▓реЛрдЧреЛрдВ рд╕реЗ рдмрд╣реБрдд рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХреА, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЕрднреА рддрдХ рдЕрдкрдиреА рдкрд╕рдВрдж рдирд╣реАрдВ рдмрдирд╛рдИ рдереАред рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдЕрдЧрд▓рд╛ рджрд╛рд╡реЗрджрд╛рд░ рдореЗрд╣рдорд╛рдиреЛрдВ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдереАред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ рд╕реВрдЪреА рд╕реЗ рдЧреБрдЬрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛, рдЗрд╕рдореЗрдВ "рдЙрд▓реНрд▓рдВрдШрдирдХрд░реНрддрд╛" рдвреВрдВрдвреЗрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдиреЗ рд╡реНрдпрдВрдЬрди рдирд╣реАрдВ рдЪреБрдиреЗ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдВ!

 for num in range(2, 72):  #         print "sleeping for 3 seconds"  time.sleep(3)  #            wedding_guest_number = wks_attendees.acell('B'+str(num)).value  #     wedding_guest_name = wks_attendees.acell('A'+str(num)).value  #     menu_guest = wks_attendees.acell('G'+str(num)).value  if not wedding_guest_number:    print wedding_guest_name+' telephone number empty not messaging'  #   ,     .            wks_attendees.update_acell('H'+str(num), '1')  #         else:    if menu_guest == "N":  #    !      !      print 'Sending message to '+wedding_guest_name      client.messages.create(        to="+" + wedding_guest_number,        from_="",  #   Twillio        body="If you have received this message, you have not chosen your food options for Tom & Lauren's Wedding!\n\nYou can pick your choices via the website, no paper or postage required!\n\nhttp://www.yourwebsitehere.com/food"      )      wks_attendees.update_acell('H'+str(num), int(wks_attendees.acell('H'+str(num)).value) + 1)  #        else:          # else-   print 'finished' 

рдЫрд╡рд┐

рдмрдбрд╝рд╛ рджрд┐рди рддреЗрдЬреА рд╕реЗ рдЖ рд░рд╣рд╛ рдерд╛ рдЬрд┐рддрдирд╛ рд╣рдо рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рдереЗред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рд╣рдореЗрдВ рдХрд░рдиреА рдереА, рд╡рд╣ рдерд╛ рдЕрдВрддрд┐рдо рдПрд╕рдПрдордПрд╕ рднреЗрдЬрдирд╛, рдореВрд▓ рд╡рд┐рд╡рд░рдг рдХреЗ рдореЗрд╣рдорд╛рдиреЛрдВ рдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рдирд╛ рдФрд░ рдПрдХ рдЫрддрд░реА рдХреЗ рд╕рд╛рде рдЦреБрдж рдХреЛ рдмрд╛рдВрдзреЗ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛, рдЬреЛ рдЖрдо рддреМрд░ рдкрд░ рдмрд░рд╕рд╛рдд рдХреА рдмреНрд░рд┐рдЯрд┐рд╢ рдЧрд░реНрдорд┐рдпреЛрдВ рд╕реЗ рдЦреБрдж рдХреЛ рдмрдЪрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛:

рдЫрд╡рд┐

рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ


рд╢рд╛рджреА рдХрд╛ рдЖрдпреЛрдЬрди рдХрднреА рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ред рдХрд┐рд╕реА рднреА рд╕рдордп, рдпрд╣ рдЖрдкрдХреЛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдШрдЯрдирд╛ рдХреЗ рдХрдИ рдкрд╣рд▓реВ рдЖрдкрдХреЗ рдирд┐рдпрдВрддреНрд░рдг рд╕реЗ рдмрд╛рд╣рд░ рд╣реИрдВред рд╕реНрд╡рдЪрд╛рд▓рди рдиреЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рдЬрд╡рд╛рдмреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд╣рдорд╛рдиреЛрдВ рдФрд░ рдЕрдирдЧрд┐рдирдд рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд╛ рдПрдХ рд╕реАрдзрд╛ рдЪреИрдирд▓ рдкреНрд░рджрд╛рди рдХрд░рдХреЗ рдореЗрд░реЗ рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛ рджрд┐рдпрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдФрд░ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреА рдХрд┐рд╕реА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рдпрд╛ред рдЙрд╕рдиреЗ рд╣рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдердХрд╛рдК рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рдореЗрдВ рд▓реЗрдиреЗ рдореЗрдВ рдорджрдж рдХреА, рдФрд░ рд╣рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рдореБрдХреНрдд рдХрд░рдиреЗ рдФрд░ рд╣рдорд╛рд░реЗ рдЬреАрд╡рди рдореЗрдВ рдРрд╕реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдШрдЯрдирд╛ рдХреЗ рдЕрдиреНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг рдШрдЯрдХреЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред

рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдХреЗрд▓реЗрдмрд▓ рд╕рдорд╛рдзрд╛рди рдмрдирд╛рдирд╛ рдХрднреА рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдореЗрд░реЗ рдЖрд╡реЗрджрди рдХреЗ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рднреА рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдореБрд╢реНрдХрд┐рд▓ рд╕реЗ рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдореИрдВрдиреЗ рдкреНрд░рдЧрддрд┐ рдХреЗ рджреГрд╢реНрдп, рдЖрд╡рд╛рдЬ рдПрдХреАрдХрд░рдг, рд╕реАрдПрд▓рдЖрдИ рд▓рд┐рдкрд┐рдпреЛрдВ рдкрд░ рдХрдо рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдзрд┐рдХ рд╡реНрдпрд╛рдкрдХ рд╕рдорд╛рдзрд╛рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ, рд▓реЗрдХрд┐рди рд╕рдордп рдЗрд╕ рджреМрдбрд╝ рдореЗрдВ рдкреНрд░рдмрд▓ рд░рд╣рд╛ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдкреНрд░рд╕рдиреНрди рд╣реВрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рдХреИрд╕реЗ рдмрджрд▓ рдЧрдпрд╛ред рдХреЛрдИ рд╕рд╣реА рд╕рдВрдЪрд╛рд░ рдкреНрд░рдгрд╛рд▓реА рдирд╣реАрдВ рд╣реИрдВред рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдЙрд╕ рдЪреИрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЖрдкрдХреЗ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╣реЛ, рдпрд╣ рдПрд╕рдПрдордПрд╕ , рд╡реЙрдпрд╕ , рдЪреИрдЯ , рд╡реАрдбрд┐рдпреЛ рдпрд╛ рд╕реЗрдорд╛рдлреЛрд░ рд╣реЛ ред

рдпрджрд┐ рдЖрдк рд╢рд╛рджреА рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдЯреНрд╡рд┐рдЯрд░ рдкрд░ рдИрдореЗрд▓ рдХрд░реЗрдВред

рдЫрд╡рд┐

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


All Articles