ื“ื™ืœื•ื’ ืœืชื•ื›ืŸ
  • ื—ื•ืงื™ ื”ืคื•ืจื•ื
  • ืคื•ืคื•ืœืจื™
  • ืœื ื ืคืชืจ
  • ืžืฉืชืžืฉื™ื
  • ื—ื™ืคื•ืฉ ื’ื•ื’ืœ ื‘ืคื•ืจื•ื
  • ืฆื•ืจ ืงืฉืจ
ืขื™ืฆื•ื‘ื™ื
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • ื‘ืจื™ืจืช ืžื—ื“ืœ (ืœืœื ืขื™ืฆื•ื‘ (ื‘ืจื™ืจืช ืžื—ื“ืœ))
  • ืœืœื ืขื™ืฆื•ื‘ (ื‘ืจื™ืจืช ืžื—ื“ืœ)
ื›ื™ื•ื•ืฅ
ืžืชืžื—ื™ื ื˜ื•ืค
  1. ื“ืฃ ื”ื‘ื™ืช
  2. ืžื—ืฉื‘ื™ื ื•ื˜ื›ื ื•ืœื•ื’ื™ื”
  3. ืจืฉืชื•ืช
  4. ืคื™ืชื•ื— ื•ืขื™ืฆื•ื‘ ืืชืจื™ื
  5. Full Stack
  6. ืฆื“ ืœืงื•ื—
  7. JavaScript ES6
  8. ืขื–ืจื” ื”ื“ื“ื™ืช - JavaScript
  9. ื‘ืขื™ื” | ๐Ÿ˜ช apps script, ืžื” ืื ื™ ืžืคืกืคืกโ‰๏ธ

ื‘ืขื™ื” | ๐Ÿ˜ช apps script, ืžื” ืื ื™ ืžืคืกืคืกโ‰๏ธ

ืžืชื•ื–ืžืŸ ื ืขื•ืฅ ื ืขื•ืœ ื”ื•ืขื‘ืจ ืขื–ืจื” ื”ื“ื“ื™ืช - JavaScript
35 ืคื•ืกื˜ื™ื 8 ื›ื•ืชื‘ื™ื 152 ืฆืคื™ื•ืช 5 ืขื•ืงื‘ื™ื
  • ืžื”ื™ืฉืŸ ืœื—ื“ืฉ
  • ืžื”ื—ื“ืฉ ืœื™ืฉืŸ
  • ื”ื›ื™ ื”ืจื‘ื” ื”ืฆื‘ืขื•ืช
ืชื’ื•ื‘ื”
  • ืชื’ื•ื‘ื” ื›ื ื•ืฉื
ื”ืชื—ื‘ืจื• ื›ื“ื™ ืœืคืจืกื ืชื’ื•ื‘ื”
ื ื•ืฉื ื–ื” ื ืžื—ืง. ืจืง ืžืฉืชืžืฉื™ื ืขื ื”ืจืฉืื•ืช ืžืชืื™ืžื•ืช ื™ื•ื›ืœื• ืœืฆืคื•ืช ื‘ื•.
  • ืจ ืจืคื™ ืกืื

    @ืข-ื”-ื“ื›ื•-ืข (ื•ื–ื” ืžื” ืฉื”ื•ื ืขื•ืฉื”....)

    ื•ื’ื ืœืคืขืžื™ื ื ื˜ืคืจื™ ื—ื•ืกื ื‘ืืคืคืก ืกืงืจื™ืคื˜ ืกืชื

    ืข"ื” ื“ื›ื•"ืขืข ืžื ื•ืชืง
    ืข"ื” ื“ื›ื•"ืขืข ืžื ื•ืชืง
    ืข"ื” ื“ื›ื•"ืข
    ื›ืชื‘ ื ืขืจืš ืœืื—ืจื•ื ื” ืขืœ ื™ื“ื™
    #16

    @ืจืคื™-ืกืื ื›ืชื‘ ื‘ื‘ืขื™ื” | ๐Ÿ˜ช apps script, ืžื” ืื ื™ ืžืคืกืคืกโ‰๏ธ:

    @ืข-ื”-ื“ื›ื•-ืข (ื•ื–ื” ืžื” ืฉื”ื•ื ืขื•ืฉื”....)

    ื•ื’ื ืœืคืขืžื™ื ื ื˜ืคืจื™ ื—ื•ืกื ื‘ืืคืคืก ืกืงืจื™ืคื˜ ืกืชื

    ืื™ืคื” ืืชื” ืจื•ืื” ืฉื–ื” ืžื” ืฉื”ื•ื ืขื•ืฉื”?

    ืชื’ื•ื‘ื” 1 ืชื’ื•ื‘ื” ืื—ืจื•ื ื”
    0
    • ืž ืžืชืขื ื™ื™ืŸ ื‘ื”ื›ืœ

      ืฉืœื•ื ื•ื‘ืจื›ื” ืื ื™ ืžื ืกื” ื›ื‘ืจ ืชืงื•ืคื” ืืจื•ื›ื” ืœื™ืฆื•ืจ ืกืงืจื™ืคื˜ื™ื ื‘ apps script ืขืœ ื™ื“ื™ gpt, ื‘ื“ืจืš ื›ืœืœ ื“ืฃ ืื™ื ื˜ืจื ื˜ ืฉืคื•ื ื” ืœืกืงืจื™ืคื˜, ืื‘ืœ ืชืžื™ื“ ื”ืกืงืจื™ืคื˜ ืœื ืขื•ื‘ื“, ืžื•ืคื™ืข ืœื™ "ืฉื’ื™ืื” ื‘ืฉืœื™ื—ืช ื”ื‘ืงืฉื”,"
      ืœืื—ืจ ืฉืขื•ืช ื‘ื›ืœ ืคืขื ืžื—ื“ืฉ, ืฉืื ื™ ืžืฉื ื” ื“ื‘ืจื™ื ืคื•ืจืก 10 ืคืขืžื™ื, ืžื•ื—ืง, ืžืฉื—ื–ืจ, ืคื•ืชื—, ื•ืกื•ื’ืจ, ื•ื›ื•' ื•ื›ื•' ื•ื›ื•' ื‘ืกื•ืฃ ื”ืกืงืจื™ืคื˜ ืžืกื›ื™ื ืœืขื‘ื•ื“,

      ืฉืืœืชื™ ืžื•ืคื ื™ืช ืืœื™ื›ื ืจื‘ื•ืชื™ื™ ื”ืžื•ืžื—ื™ื, ื”ืื ื™ืฉ ืžืฉื”ื• ืฉืื ื™ ืžืคืกืคืก? ื”ืื ื™ืฉ ื—ืœืง ืžืกื•ื™ื™ื ืฉืฆืจื™ืš ืœืฉื™ื ืœื‘ ืืœื™ื• ื‘ืฆื•ืจื” ืžื™ื•ื—ื“ืช? ืืฉืžื— ืชืฉืื™ืจื• ืืช ืขื™ื ื™, ื•ืื ืฆืจื™ืš ืœืคืจื˜ ื™ื•ืชืจ ืžื” ื”ืงื•ื“ ืžื” ื”ืกืงืจื™ืคื˜ ื•ื›ื•' ืคืฉื•ื˜ ืชื’ื™ื“ื•...
      ืชื•ื“ื” ืจื‘ื” ืžืจืืฉ .

      ืจ ืžื ื•ืชืง
      ืจ ืžื ื•ืชืง
      ืจืคื™ ืกืื
      ื›ืชื‘ ื ืขืจืš ืœืื—ืจื•ื ื” ืขืœ ื™ื“ื™
      #17

      @ืžืชืขื ื™ื™ืŸ-ื‘ื”ื›ืœ ื›ืชื‘ ื‘ื‘ืขื™ื” | ๐Ÿ˜ช apps script, ืžื” ืื ื™ ืžืคืกืคืกโ‰๏ธ:

      ื‘ื“ืจืš ื›ืœืœ ื“ืฃ ืื™ื ื˜ืจื ื˜ ืฉืคื•ื ื” ืœืกืงืจื™ืคื˜

      ื”ื ื”

      ืข"ื” ื“ื›ื•"ืขืข ืชื’ื•ื‘ื” 1 ืชื’ื•ื‘ื” ืื—ืจื•ื ื”
      0
      • ืจ ืจืคื™ ืกืื

        @ืžืชืขื ื™ื™ืŸ-ื‘ื”ื›ืœ ื›ืชื‘ ื‘ื‘ืขื™ื” | ๐Ÿ˜ช apps script, ืžื” ืื ื™ ืžืคืกืคืกโ‰๏ธ:

        ื‘ื“ืจืš ื›ืœืœ ื“ืฃ ืื™ื ื˜ืจื ื˜ ืฉืคื•ื ื” ืœืกืงืจื™ืคื˜

        ื”ื ื”

        ืข"ื” ื“ื›ื•"ืขืข ืžื ื•ืชืง
        ืข"ื” ื“ื›ื•"ืขืข ืžื ื•ืชืง
        ืข"ื” ื“ื›ื•"ืข
        ื›ืชื‘ ื ืขืจืš ืœืื—ืจื•ื ื” ืขืœ ื™ื“ื™
        #18

        @ืจืคื™-ืกืื ื›ืชื‘ ื‘ื‘ืขื™ื” | ๐Ÿ˜ช apps script, ืžื” ืื ื™ ืžืคืกืคืกโ‰๏ธ:

        @ืžืชืขื ื™ื™ืŸ-ื‘ื”ื›ืœ ื›ืชื‘ ื‘ื‘ืขื™ื” | ๐Ÿ˜ช apps script, ืžื” ืื ื™ ืžืคืกืคืกโ‰๏ธ:

        ื‘ื“ืจืš ื›ืœืœ ื“ืฃ ืื™ื ื˜ืจื ื˜ ืฉืคื•ื ื” ืœืกืงืจื™ืคื˜

        ื”ื ื”

        ื ื˜ืคืจื™ ื—ื•ืกืžื™ื ืกืงืจื™ืคื˜ ืฉืคื•ื ื” ืœื“ืฃ ืื™ื ื˜ืจื ื˜, ืœื ื“ืฃ ืื™ื ื˜ืจื ื˜ ืฉืคื•ื ื” ืœืกืงืจื™ืคื˜.

        ืจ ืชื’ื•ื‘ื” 1 ืชื’ื•ื‘ื” ืื—ืจื•ื ื”
        2
        • ืข"ื” ื“ื›ื•"ืขืข ืข"ื” ื“ื›ื•"ืข

          @ืจืคื™-ืกืื ื›ืชื‘ ื‘ื‘ืขื™ื” | ๐Ÿ˜ช apps script, ืžื” ืื ื™ ืžืคืกืคืกโ‰๏ธ:

          @ืžืชืขื ื™ื™ืŸ-ื‘ื”ื›ืœ ื›ืชื‘ ื‘ื‘ืขื™ื” | ๐Ÿ˜ช apps script, ืžื” ืื ื™ ืžืคืกืคืกโ‰๏ธ:

          ื‘ื“ืจืš ื›ืœืœ ื“ืฃ ืื™ื ื˜ืจื ื˜ ืฉืคื•ื ื” ืœืกืงืจื™ืคื˜

          ื”ื ื”

          ื ื˜ืคืจื™ ื—ื•ืกืžื™ื ืกืงืจื™ืคื˜ ืฉืคื•ื ื” ืœื“ืฃ ืื™ื ื˜ืจื ื˜, ืœื ื“ืฃ ืื™ื ื˜ืจื ื˜ ืฉืคื•ื ื” ืœืกืงืจื™ืคื˜.

          ืจ ืžื ื•ืชืง
          ืจ ืžื ื•ืชืง
          ืจืคื™ ืกืื
          ื›ืชื‘ ื ืขืจืš ืœืื—ืจื•ื ื” ืขืœ ื™ื“ื™
          #19

          @ืข-ื”-ื“ื›ื•-ืข ื›ืš ื”ื™ื” ื ืฉืžืข ืœื™....

          ืž ืชื’ื•ื‘ื” 1 ืชื’ื•ื‘ื” ืื—ืจื•ื ื”
          0
          • ืจ ืจืคื™ ืกืื

            @ืข-ื”-ื“ื›ื•-ืข ื›ืš ื”ื™ื” ื ืฉืžืข ืœื™....

            ืž ืžื ื•ืชืง
            ืž ืžื ื•ืชืง
            ืžืชืขื ื™ื™ืŸ ื‘ื”ื›ืœ
            ื›ืชื‘ ื ืขืจืš ืœืื—ืจื•ื ื” ืขืœ ื™ื“ื™ ืžืชืขื ื™ื™ืŸ ื‘ื”ื›ืœ
            #20

            @ืจืคื™-ืกืื
            ืื• ืื”ื” ืขื›ืฉื™ื• ืื ื™ ื ื›ื ืก ืœืคื”, ืœืื—ืจ ื”ืจื‘ื” ื–ืžืŸ ื•ืื ื™ ืจื•ืื” ืฉื”ื ื•ืฉื ื ื”ื™ื” ืžืžืฉ ื•ื™ืจืืœื™....
            ื. ืื™ืคื” ืื ื™ ื™ื›ื•ืœ ืœื‘ื“ื•ืง ืืช ื”ืœื•ื’ื• ื‘ืงืฉื•ืช ื‘ apps script ื•ืœื‘ื“ื•ืง ื”ืื ื”ื‘ืงืฉื•ืช ื‘ื›ืœืœ ื”ืชืงื‘ืœื•?
            ื‘. ืชื•ื“ื” ืจื‘ื” ืœื›ืœ ื”ืขื•ื–ืจื™ื ื•ื”ืžืกื™ื™ืขื™ื.

            ื’. ืื ื™ ืœื ื‘ื ื˜ืคืจื™.

            ืื ื–ื” ื ื—ื•ืฅ ืื ื™ ืืฉืชืฃ ืืช ื”ืกืงืจื™ืคื˜, (ื‘ื”ืชื—ืœื” ืœื ืฉืœื—ืชื™ ื›ื™ ื—ืฉื‘ืชื™ ืฉืœื ื™ื”ื™ื” ืœืžื™ืฉื”ื• ื›ื— ืœืขื‘ื•ืจ ืขืœ ื–ื”, ืื‘ืœ ืื ื™ ืจื•ืื” ืฉืื ืฉื™ื ืคื” ืžืื•ื“ ืžืื•ื“ ืื•ื”ื‘ื™ื ืœืขื–ื•ืจ, ๐Ÿ‘๐Ÿ‘)

            ืข"ื” ื“ื›ื•"ืขืข ืชื’ื•ื‘ื” 1 ืชื’ื•ื‘ื” ืื—ืจื•ื ื”
            1
            • ืž ืžืชืขื ื™ื™ืŸ ื‘ื”ื›ืœ

              @ืจืคื™-ืกืื
              ืื• ืื”ื” ืขื›ืฉื™ื• ืื ื™ ื ื›ื ืก ืœืคื”, ืœืื—ืจ ื”ืจื‘ื” ื–ืžืŸ ื•ืื ื™ ืจื•ืื” ืฉื”ื ื•ืฉื ื ื”ื™ื” ืžืžืฉ ื•ื™ืจืืœื™....
              ื. ืื™ืคื” ืื ื™ ื™ื›ื•ืœ ืœื‘ื“ื•ืง ืืช ื”ืœื•ื’ื• ื‘ืงืฉื•ืช ื‘ apps script ื•ืœื‘ื“ื•ืง ื”ืื ื”ื‘ืงืฉื•ืช ื‘ื›ืœืœ ื”ืชืงื‘ืœื•?
              ื‘. ืชื•ื“ื” ืจื‘ื” ืœื›ืœ ื”ืขื•ื–ืจื™ื ื•ื”ืžืกื™ื™ืขื™ื.

              ื’. ืื ื™ ืœื ื‘ื ื˜ืคืจื™.

              ืื ื–ื” ื ื—ื•ืฅ ืื ื™ ืืฉืชืฃ ืืช ื”ืกืงืจื™ืคื˜, (ื‘ื”ืชื—ืœื” ืœื ืฉืœื—ืชื™ ื›ื™ ื—ืฉื‘ืชื™ ืฉืœื ื™ื”ื™ื” ืœืžื™ืฉื”ื• ื›ื— ืœืขื‘ื•ืจ ืขืœ ื–ื”, ืื‘ืœ ืื ื™ ืจื•ืื” ืฉืื ืฉื™ื ืคื” ืžืื•ื“ ืžืื•ื“ ืื•ื”ื‘ื™ื ืœืขื–ื•ืจ, ๐Ÿ‘๐Ÿ‘)

              ืข"ื” ื“ื›ื•"ืขืข ืžื ื•ืชืง
              ืข"ื” ื“ื›ื•"ืขืข ืžื ื•ืชืง
              ืข"ื” ื“ื›ื•"ืข
              ื›ืชื‘ ื ืขืจืš ืœืื—ืจื•ื ื” ืขืœ ื™ื“ื™
              #21

              @ืžืชืขื ื™ื™ืŸ-ื‘ื”ื›ืœ
              ืืช ื”ืœื•ื’ ืืคืฉืจ ืœืจืื•ืช ื‘ื›ืจื˜ื™ืกื™ื™ืช ื”ืคืขืœื•ืช. ืœื•ืงื— ืงืฆืช ื–ืžืŸ ืขื“ ืฉื”ื•ื ื ืจืฉื ืฉื.

              ืž ืชื’ื•ื‘ื” 1 ืชื’ื•ื‘ื” ืื—ืจื•ื ื”
              0
              • ืข"ื” ื“ื›ื•"ืขืข ืข"ื” ื“ื›ื•"ืข

                @ืžืชืขื ื™ื™ืŸ-ื‘ื”ื›ืœ
                ืืช ื”ืœื•ื’ ืืคืฉืจ ืœืจืื•ืช ื‘ื›ืจื˜ื™ืกื™ื™ืช ื”ืคืขืœื•ืช. ืœื•ืงื— ืงืฆืช ื–ืžืŸ ืขื“ ืฉื”ื•ื ื ืจืฉื ืฉื.

                ืž ืžื ื•ืชืง
                ืž ืžื ื•ืชืง
                ืžืชืขื ื™ื™ืŸ ื‘ื”ื›ืœ
                ื›ืชื‘ ื ืขืจืš ืœืื—ืจื•ื ื” ืขืœ ื™ื“ื™
                #22

                @ืข-ื”-ื“ื›ื•-ืข
                ืชื•ื“ื”, ื‘ื•ื“ืง....

                ืชื’ื•ื‘ื” 1 ืชื’ื•ื‘ื” ืื—ืจื•ื ื”
                0
                • ืž ืžื ื•ืชืง
                  ืž ืžื ื•ืชืง
                  ืžืชืขื ื™ื™ืŸ ื‘ื”ื›ืœ
                  ื›ืชื‘ ื ืขืจืš ืœืื—ืจื•ื ื” ืขืœ ื™ื“ื™ ืžืชืขื ื™ื™ืŸ ื‘ื”ื›ืœ
                  #23

                  ื”ืกืงืจื™ืคื˜ ื‘ืกืคื•ื™ื™ืœืจ

                  const SHEET_ID = "id ืฉืœ ื’ื™ืœื™ื•ืŸ ืฉื™ื˜ืก"; // ืขื“ื›ืŸ
                  
                  function doPost(e) {
                    try {
                      const data = JSON.parse(e.postData.contents || "{}");
                      const answer = (data.answer || "").toString().trim();
                      const token = (data.token || "").toString().trim();
                      const name = (data.name || "").toString().trim();
                      const email = (data.email || "").toString().trim();
                  
                      if (!answer || !token) {
                        return ContentService.createTextOutput(JSON.stringify({status:"error", message:"missing answer or token"})).setMimeType(ContentService.MimeType.JSON);
                      }
                  
                      const ss = SpreadsheetApp.openById(SHEET_ID);
                      // ื•ื•ื“ื ืฉื™ืฉ ื’ืœื™ื•ืŸ ืœื˜ื•ืงื ื™ื ื•ืฉื ื”ื’ืœื™ื•ืŸ ื ืงืจื "Tokens"
                      let tokensSheet = ss.getSheetByName("Tokens");
                      if (!tokensSheet) {
                        // ืฆื•ืจ ื’ืœื™ื•ืŸ Tokens ืขื ื›ื•ืชืจืช ืื ืœื ืงื™ื™ื
                        tokensSheet = ss.insertSheet("Tokens");
                        tokensSheet.appendRow(["Token","Name","Email","Used"]);
                      }
                  
                      // Responses sheet
                      let respSheet = ss.getSheetByName("Responses");
                      if (!respSheet) {
                        respSheet = ss.insertSheet("Responses");
                        respSheet.appendRow(["Timestamp","Token","Name","Email","Answer"]);
                      }
                  
                      // ืงืจื ืืช ื›ืœ ื”ื˜ื•ืงื ื™ื (ืžืกืคื™ืง ืœื’ื™ืœื™ื•ื ื•ืช ืงื˜ื ื™ื/ื‘ื™ื ื•ื ื™ื™ื)
                      const tokenData = tokensSheet.getDataRange().getValues(); // ื›ื•ืœืœ ื›ื•ืชืจืช
                      let foundRow = -1;
                      for (let i = 1; i < tokenData.length; i++) {
                        if (tokenData[i][0].toString().trim() === token) {
                          foundRow = i + 1; // ืžืกืคืจ ืฉื•ืจืช ื”ื’ื™ืœื™ื•ืŸ (1-indexed)
                          break;
                        }
                      }
                  
                      if (foundRow === -1) {
                        return ContentService.createTextOutput(JSON.stringify({status:"error", message:"invalid token"})).setMimeType(ContentService.MimeType.JSON);
                      }
                  
                      const usedVal = tokensSheet.getRange(foundRow, 4).getValue(); // ืขืžื•ื“ื” D = Used
                      if (usedVal && usedVal.toString().toLowerCase() === "used") {
                        return ContentService.createTextOutput(JSON.stringify({status:"error", message:"token already used"})).setMimeType(ContentService.MimeType.JSON);
                      }
                  
                      // ืื•ืคืฆื™ื•ื ืœื™: ื‘ื“ื•ืง ื”ืชืืžื” ืฉืœ ืฉื/ืื™ืžื™ื™ืœ (ืื ื‘ืจืฆื•ื ืš ืœืืœืฅ ื”ืชืืžื”)
                      // const registeredName = tokensSheet.getRange(foundRow, 2).getValue().toString().trim();
                      // if (registeredName && name && registeredName !== name) { ... }
                  
                      // ืกืžืŸ ืืช ื”ื˜ื•ืงืŸ ื›ึพUsed ื•ืชืขื“ ื–ืžืŸ ื•ืฉื/ืžื™ื™ืœ ืื ืชืจืฆื”
                      tokensSheet.getRange(foundRow, 4).setValue("used");
                  
                      // ืจืฉื•ื ืืช ื”ื”ืฆื‘ืขื” ื‘ึพResponses
                      respSheet.appendRow([new Date(), token, name, email, answer]);
                  
                      return ContentService.createTextOutput(JSON.stringify({status:"ok"})).setMimeType(ContentService.MimeType.JSON);
                  
                    } catch (err) {
                      return ContentService.createTextOutput(JSON.stringify({status:"error", message: err.message})).setMimeType(ContentService.MimeType.JSON);
                    }
                  }
                  
                  function doGet(e) {
                    try {
                      const mode = (e.parameter.mode || "").toString();
                      const ss = SpreadsheetApp.openById(SHEET_ID);
                      const sheet = ss.getSheetByName("Responses");
                      if (!sheet) return ContentService.createTextOutput(JSON.stringify({})).setMimeType(ContentService.MimeType.JSON);
                  
                      const data = sheet.getDataRange().getValues();
                      const counts = {};
                      let total = 0;
                      for (let i = 1; i < data.length; i++) {
                        const ans = data[i][4]; // Answer column (E)
                        if (!ans) continue;
                        counts[ans] = (counts[ans] || 0) + 1;
                        total++;
                      }
                  
                      const percentages = {};
                      for (const k in counts) {
                        percentages[k] = Math.round((counts[k] / total) * 100);
                      }
                  
                      return ContentService.createTextOutput(JSON.stringify(percentages)).setMimeType(ContentService.MimeType.JSON);
                  
                    } catch (err) {
                      return ContentService.createTextOutput(JSON.stringify({status:"error", message: err.message})).setMimeType(ContentService.MimeType.JSON);
                    }
                  }
                  

                  ื .ื‘. ื–ื” ืื—ื“ ืžืชื•ืš ืจื‘ื™ื...

                  ืข"ื” ื“ื›ื•"ืขืข ืชื’ื•ื‘ื” 1 ืชื’ื•ื‘ื” ืื—ืจื•ื ื”
                  0
                  • ืž ืžืชืขื ื™ื™ืŸ ื‘ื”ื›ืœ

                    ื”ืกืงืจื™ืคื˜ ื‘ืกืคื•ื™ื™ืœืจ

                    const SHEET_ID = "id ืฉืœ ื’ื™ืœื™ื•ืŸ ืฉื™ื˜ืก"; // ืขื“ื›ืŸ
                    
                    function doPost(e) {
                      try {
                        const data = JSON.parse(e.postData.contents || "{}");
                        const answer = (data.answer || "").toString().trim();
                        const token = (data.token || "").toString().trim();
                        const name = (data.name || "").toString().trim();
                        const email = (data.email || "").toString().trim();
                    
                        if (!answer || !token) {
                          return ContentService.createTextOutput(JSON.stringify({status:"error", message:"missing answer or token"})).setMimeType(ContentService.MimeType.JSON);
                        }
                    
                        const ss = SpreadsheetApp.openById(SHEET_ID);
                        // ื•ื•ื“ื ืฉื™ืฉ ื’ืœื™ื•ืŸ ืœื˜ื•ืงื ื™ื ื•ืฉื ื”ื’ืœื™ื•ืŸ ื ืงืจื "Tokens"
                        let tokensSheet = ss.getSheetByName("Tokens");
                        if (!tokensSheet) {
                          // ืฆื•ืจ ื’ืœื™ื•ืŸ Tokens ืขื ื›ื•ืชืจืช ืื ืœื ืงื™ื™ื
                          tokensSheet = ss.insertSheet("Tokens");
                          tokensSheet.appendRow(["Token","Name","Email","Used"]);
                        }
                    
                        // Responses sheet
                        let respSheet = ss.getSheetByName("Responses");
                        if (!respSheet) {
                          respSheet = ss.insertSheet("Responses");
                          respSheet.appendRow(["Timestamp","Token","Name","Email","Answer"]);
                        }
                    
                        // ืงืจื ืืช ื›ืœ ื”ื˜ื•ืงื ื™ื (ืžืกืคื™ืง ืœื’ื™ืœื™ื•ื ื•ืช ืงื˜ื ื™ื/ื‘ื™ื ื•ื ื™ื™ื)
                        const tokenData = tokensSheet.getDataRange().getValues(); // ื›ื•ืœืœ ื›ื•ืชืจืช
                        let foundRow = -1;
                        for (let i = 1; i < tokenData.length; i++) {
                          if (tokenData[i][0].toString().trim() === token) {
                            foundRow = i + 1; // ืžืกืคืจ ืฉื•ืจืช ื”ื’ื™ืœื™ื•ืŸ (1-indexed)
                            break;
                          }
                        }
                    
                        if (foundRow === -1) {
                          return ContentService.createTextOutput(JSON.stringify({status:"error", message:"invalid token"})).setMimeType(ContentService.MimeType.JSON);
                        }
                    
                        const usedVal = tokensSheet.getRange(foundRow, 4).getValue(); // ืขืžื•ื“ื” D = Used
                        if (usedVal && usedVal.toString().toLowerCase() === "used") {
                          return ContentService.createTextOutput(JSON.stringify({status:"error", message:"token already used"})).setMimeType(ContentService.MimeType.JSON);
                        }
                    
                        // ืื•ืคืฆื™ื•ื ืœื™: ื‘ื“ื•ืง ื”ืชืืžื” ืฉืœ ืฉื/ืื™ืžื™ื™ืœ (ืื ื‘ืจืฆื•ื ืš ืœืืœืฅ ื”ืชืืžื”)
                        // const registeredName = tokensSheet.getRange(foundRow, 2).getValue().toString().trim();
                        // if (registeredName && name && registeredName !== name) { ... }
                    
                        // ืกืžืŸ ืืช ื”ื˜ื•ืงืŸ ื›ึพUsed ื•ืชืขื“ ื–ืžืŸ ื•ืฉื/ืžื™ื™ืœ ืื ืชืจืฆื”
                        tokensSheet.getRange(foundRow, 4).setValue("used");
                    
                        // ืจืฉื•ื ืืช ื”ื”ืฆื‘ืขื” ื‘ึพResponses
                        respSheet.appendRow([new Date(), token, name, email, answer]);
                    
                        return ContentService.createTextOutput(JSON.stringify({status:"ok"})).setMimeType(ContentService.MimeType.JSON);
                    
                      } catch (err) {
                        return ContentService.createTextOutput(JSON.stringify({status:"error", message: err.message})).setMimeType(ContentService.MimeType.JSON);
                      }
                    }
                    
                    function doGet(e) {
                      try {
                        const mode = (e.parameter.mode || "").toString();
                        const ss = SpreadsheetApp.openById(SHEET_ID);
                        const sheet = ss.getSheetByName("Responses");
                        if (!sheet) return ContentService.createTextOutput(JSON.stringify({})).setMimeType(ContentService.MimeType.JSON);
                    
                        const data = sheet.getDataRange().getValues();
                        const counts = {};
                        let total = 0;
                        for (let i = 1; i < data.length; i++) {
                          const ans = data[i][4]; // Answer column (E)
                          if (!ans) continue;
                          counts[ans] = (counts[ans] || 0) + 1;
                          total++;
                        }
                    
                        const percentages = {};
                        for (const k in counts) {
                          percentages[k] = Math.round((counts[k] / total) * 100);
                        }
                    
                        return ContentService.createTextOutput(JSON.stringify(percentages)).setMimeType(ContentService.MimeType.JSON);
                    
                      } catch (err) {
                        return ContentService.createTextOutput(JSON.stringify({status:"error", message: err.message})).setMimeType(ContentService.MimeType.JSON);
                      }
                    }
                    

                    ื .ื‘. ื–ื” ืื—ื“ ืžืชื•ืš ืจื‘ื™ื...

                    ืข"ื” ื“ื›ื•"ืขืข ืžื ื•ืชืง
                    ืข"ื” ื“ื›ื•"ืขืข ืžื ื•ืชืง
                    ืข"ื” ื“ื›ื•"ืข
                    ื›ืชื‘ ื ืขืจืš ืœืื—ืจื•ื ื” ืขืœ ื™ื“ื™
                    #24

                    @ืžืชืขื ื™ื™ืŸ-ื‘ื”ื›ืœ ื ื•, ื”ืกืงืจื™ืคื˜ ื”ื–ื” ื›ืฆื•ืจืชื• ืœื ืขื•ื‘ื“ ืœืš ื˜ื•ื‘?

                    ื›ืžื•ื‘ืŸ ืื—ืจื™ ืฉืืชื” ืžื›ื ื™ืก ID ืืžื™ืชื™ ืฉืœ ื’ื™ืœื™ื•ืŸ

                    ืž ืชื’ื•ื‘ื” 1 ืชื’ื•ื‘ื” ืื—ืจื•ื ื”
                    0
                    • ืข"ื” ื“ื›ื•"ืขืข ืข"ื” ื“ื›ื•"ืข

                      @ืžืชืขื ื™ื™ืŸ-ื‘ื”ื›ืœ ื ื•, ื”ืกืงืจื™ืคื˜ ื”ื–ื” ื›ืฆื•ืจืชื• ืœื ืขื•ื‘ื“ ืœืš ื˜ื•ื‘?

                      ื›ืžื•ื‘ืŸ ืื—ืจื™ ืฉืืชื” ืžื›ื ื™ืก ID ืืžื™ืชื™ ืฉืœ ื’ื™ืœื™ื•ืŸ

                      ืž ืžื ื•ืชืง
                      ืž ืžื ื•ืชืง
                      ืžืชืขื ื™ื™ืŸ ื‘ื”ื›ืœ
                      ื›ืชื‘ ื ืขืจืš ืœืื—ืจื•ื ื” ืขืœ ื™ื“ื™ ืžืชืขื ื™ื™ืŸ ื‘ื”ื›ืœ
                      #25

                      @ืข-ื”-ื“ื›ื•-ืข
                      ืœื ืขื•ื‘ื“... ืœืฉืœื•ื— ืืช ื”ื“ืฃ ืฉืฉื•ืœื— ืืœื™ื•?

                      ืข"ื” ื“ื›ื•"ืขืข ืชื’ื•ื‘ื” 1 ืชื’ื•ื‘ื” ืื—ืจื•ื ื”
                      0
                      • ืž ืžืชืขื ื™ื™ืŸ ื‘ื”ื›ืœ

                        @ืข-ื”-ื“ื›ื•-ืข
                        ืœื ืขื•ื‘ื“... ืœืฉืœื•ื— ืืช ื”ื“ืฃ ืฉืฉื•ืœื— ืืœื™ื•?

                        ืข"ื” ื“ื›ื•"ืขืข ืžื ื•ืชืง
                        ืข"ื” ื“ื›ื•"ืขืข ืžื ื•ืชืง
                        ืข"ื” ื“ื›ื•"ืข
                        ื›ืชื‘ ื ืขืจืš ืœืื—ืจื•ื ื” ืขืœ ื™ื“ื™ ืข"ื” ื“ื›ื•"ืข
                        #26

                        @ืžืชืขื ื™ื™ืŸ-ื‘ื”ื›ืœ ื›ืชื‘ ื‘ื‘ืขื™ื” | ๐Ÿ˜ช apps script, ืžื” ืื ื™ ืžืคืกืคืกโ‰๏ธ:

                        @ืข-ื”-ื“ื›ื•-ืข
                        ืœื ืขื•ื‘ื“... ืœืฉืœื•ื— ืืช ื”ื“ืฃ ืฉืฉื•ืœื— ืืœื™ื•?

                        ื”ื•ื ื‘ื˜ื— ืขื“ื™ื™ืŸ ื™ื”ื™ื” ืกื’ื•ืจ ื‘ื ื˜ืคืจื™.

                        ืื‘ืœ ืื•ืœื™ ืชื›ืชื•ื‘ ืื•ืชื• ื›ืืŸ ืฉื ื•ื›ืœ ืœืจืื•ืช ืื ื”ืคืจืžื˜ืจื™ื ื‘URL ื ื›ื•ื ื™ื ื•ืžืชืื™ืžื™ื

                        ืž ืชื’ื•ื‘ื” 1 ืชื’ื•ื‘ื” ืื—ืจื•ื ื”
                        0
                        • ืข"ื” ื“ื›ื•"ืขืข ืข"ื” ื“ื›ื•"ืข

                          @ืžืชืขื ื™ื™ืŸ-ื‘ื”ื›ืœ ื›ืชื‘ ื‘ื‘ืขื™ื” | ๐Ÿ˜ช apps script, ืžื” ืื ื™ ืžืคืกืคืกโ‰๏ธ:

                          @ืข-ื”-ื“ื›ื•-ืข
                          ืœื ืขื•ื‘ื“... ืœืฉืœื•ื— ืืช ื”ื“ืฃ ืฉืฉื•ืœื— ืืœื™ื•?

                          ื”ื•ื ื‘ื˜ื— ืขื“ื™ื™ืŸ ื™ื”ื™ื” ืกื’ื•ืจ ื‘ื ื˜ืคืจื™.

                          ืื‘ืœ ืื•ืœื™ ืชื›ืชื•ื‘ ืื•ืชื• ื›ืืŸ ืฉื ื•ื›ืœ ืœืจืื•ืช ืื ื”ืคืจืžื˜ืจื™ื ื‘URL ื ื›ื•ื ื™ื ื•ืžืชืื™ืžื™ื

                          ืž ืžื ื•ืชืง
                          ืž ืžื ื•ืชืง
                          ืžืชืขื ื™ื™ืŸ ื‘ื”ื›ืœ
                          ื›ืชื‘ ื ืขืจืš ืœืื—ืจื•ื ื” ืขืœ ื™ื“ื™
                          #27

                          @ืข-ื”-ื“ื›ื•-ืข ื›ืชื‘ ื‘ื‘ืขื™ื” | ๐Ÿ˜ช apps script, ืžื” ืื ื™ ืžืคืกืคืกโ‰๏ธ:

                          @ืžืชืขื ื™ื™ืŸ-ื‘ื”ื›ืœ ื›ืชื‘ ื‘ื‘ืขื™ื” | ๐Ÿ˜ช apps script, ืžื” ืื ื™ ืžืคืกืคืกโ‰๏ธ:

                          @ืข-ื”-ื“ื›ื•-ืข
                          ืœื ืขื•ื‘ื“... ืœืฉืœื•ื— ืืช ื”ื“ืฃ ืฉืฉื•ืœื— ืืœื™ื•?

                          ื”ื•ื ื‘ื˜ื— ืขื“ื™ื™ืŸ ื™ื”ื™ื” ืกื’ื•ืจ ื‘ื ื˜ืคืจื™.

                          ืื‘ืœ ืื•ืœื™ ืชื›ืชื•ื‘ ืื•ืชื• ื›ืืŸ ืฉื ื•ื›ืœ ืœืจืื•ืช ืื ื”ืคืจืžื˜ืจื™ื ื‘URL ื ื›ื•ื ื™ื ื•ืžืชืื™ืžื™ื

                          ื. ืขื“ื™ื™ืŸ ืœื ื”ืขืœื™ืชื™ ืืช ื”ื“ืฃ,
                          ื‘. ืื ื™ ืœื ื‘ื ื˜ืคืจื™
                          ื’. ื”ื›ื ืกืชื™ ืืช ื” URL ืฉื”ื•ืคื™ืข ืœืื—ืจ ื”ืคืจื™ืกื”

                          ืข"ื” ื“ื›ื•"ืขืข ืชื’ื•ื‘ื” 1 ืชื’ื•ื‘ื” ืื—ืจื•ื ื”
                          0
                          • ืž ืžืชืขื ื™ื™ืŸ ื‘ื”ื›ืœ

                            @ืข-ื”-ื“ื›ื•-ืข ื›ืชื‘ ื‘ื‘ืขื™ื” | ๐Ÿ˜ช apps script, ืžื” ืื ื™ ืžืคืกืคืกโ‰๏ธ:

                            @ืžืชืขื ื™ื™ืŸ-ื‘ื”ื›ืœ ื›ืชื‘ ื‘ื‘ืขื™ื” | ๐Ÿ˜ช apps script, ืžื” ืื ื™ ืžืคืกืคืกโ‰๏ธ:

                            @ืข-ื”-ื“ื›ื•-ืข
                            ืœื ืขื•ื‘ื“... ืœืฉืœื•ื— ืืช ื”ื“ืฃ ืฉืฉื•ืœื— ืืœื™ื•?

                            ื”ื•ื ื‘ื˜ื— ืขื“ื™ื™ืŸ ื™ื”ื™ื” ืกื’ื•ืจ ื‘ื ื˜ืคืจื™.

                            ืื‘ืœ ืื•ืœื™ ืชื›ืชื•ื‘ ืื•ืชื• ื›ืืŸ ืฉื ื•ื›ืœ ืœืจืื•ืช ืื ื”ืคืจืžื˜ืจื™ื ื‘URL ื ื›ื•ื ื™ื ื•ืžืชืื™ืžื™ื

                            ื. ืขื“ื™ื™ืŸ ืœื ื”ืขืœื™ืชื™ ืืช ื”ื“ืฃ,
                            ื‘. ืื ื™ ืœื ื‘ื ื˜ืคืจื™
                            ื’. ื”ื›ื ืกืชื™ ืืช ื” URL ืฉื”ื•ืคื™ืข ืœืื—ืจ ื”ืคืจื™ืกื”

                            ืข"ื” ื“ื›ื•"ืขืข ืžื ื•ืชืง
                            ืข"ื” ื“ื›ื•"ืขืข ืžื ื•ืชืง
                            ืข"ื” ื“ื›ื•"ืข
                            ื›ืชื‘ ื ืขืจืš ืœืื—ืจื•ื ื” ืขืœ ื™ื“ื™
                            #28

                            @ืžืชืขื ื™ื™ืŸ-ื‘ื”ื›ืœ ื›ืชื‘ ื‘ื‘ืขื™ื” | ๐Ÿ˜ช apps script, ืžื” ืื ื™ ืžืคืกืคืกโ‰๏ธ:

                            @ืข-ื”-ื“ื›ื•-ืข ื›ืชื‘ ื‘ื‘ืขื™ื” | ๐Ÿ˜ช apps script, ืžื” ืื ื™ ืžืคืกืคืกโ‰๏ธ:

                            @ืžืชืขื ื™ื™ืŸ-ื‘ื”ื›ืœ ื›ืชื‘ ื‘ื‘ืขื™ื” | ๐Ÿ˜ช apps script, ืžื” ืื ื™ ืžืคืกืคืกโ‰๏ธ:

                            @ืข-ื”-ื“ื›ื•-ืข
                            ืœื ืขื•ื‘ื“... ืœืฉืœื•ื— ืืช ื”ื“ืฃ ืฉืฉื•ืœื— ืืœื™ื•?

                            ื”ื•ื ื‘ื˜ื— ืขื“ื™ื™ืŸ ื™ื”ื™ื” ืกื’ื•ืจ ื‘ื ื˜ืคืจื™.

                            ืื‘ืœ ืื•ืœื™ ืชื›ืชื•ื‘ ืื•ืชื• ื›ืืŸ ืฉื ื•ื›ืœ ืœืจืื•ืช ืื ื”ืคืจืžื˜ืจื™ื ื‘URL ื ื›ื•ื ื™ื ื•ืžืชืื™ืžื™ื

                            ื. ืขื“ื™ื™ืŸ ืœื ื”ืขืœื™ืชื™ ืืช ื”ื“ืฃ,

                            ืื– ืื™ืš ืืชื” ื™ื•ื“ืข ืฉื”ื•ื ืœื ืขื•ื‘ื“?

                            ื‘. ืื ื™ ืœื ื‘ื ื˜ืคืจื™

                            ืื ื™ ื›ืŸ, ื•ืœื›ืŸ ืื ื™ ืœื ืื•ื›ืœ ืœื‘ื“ื•ืง ืœืš.

                            ื’. ื”ื›ื ืกืชื™ ืืช ื” URL ืฉื”ื•ืคื™ืข ืœืื—ืจ ื”ืคืจื™ืกื”

                            ืื‘ืœ ื”ื•ืกืคืช ืœื• ืืช ื”ืคืจืžื˜ืจื™ื ื”ื ื“ืจืฉื™ื?

                            ืž ืชื’ื•ื‘ื” 1 ืชื’ื•ื‘ื” ืื—ืจื•ื ื”
                            0
                            • ืข"ื” ื“ื›ื•"ืขืข ืข"ื” ื“ื›ื•"ืข

                              @ืžืชืขื ื™ื™ืŸ-ื‘ื”ื›ืœ ื›ืชื‘ ื‘ื‘ืขื™ื” | ๐Ÿ˜ช apps script, ืžื” ืื ื™ ืžืคืกืคืกโ‰๏ธ:

                              @ืข-ื”-ื“ื›ื•-ืข ื›ืชื‘ ื‘ื‘ืขื™ื” | ๐Ÿ˜ช apps script, ืžื” ืื ื™ ืžืคืกืคืกโ‰๏ธ:

                              @ืžืชืขื ื™ื™ืŸ-ื‘ื”ื›ืœ ื›ืชื‘ ื‘ื‘ืขื™ื” | ๐Ÿ˜ช apps script, ืžื” ืื ื™ ืžืคืกืคืกโ‰๏ธ:

                              @ืข-ื”-ื“ื›ื•-ืข
                              ืœื ืขื•ื‘ื“... ืœืฉืœื•ื— ืืช ื”ื“ืฃ ืฉืฉื•ืœื— ืืœื™ื•?

                              ื”ื•ื ื‘ื˜ื— ืขื“ื™ื™ืŸ ื™ื”ื™ื” ืกื’ื•ืจ ื‘ื ื˜ืคืจื™.

                              ืื‘ืœ ืื•ืœื™ ืชื›ืชื•ื‘ ืื•ืชื• ื›ืืŸ ืฉื ื•ื›ืœ ืœืจืื•ืช ืื ื”ืคืจืžื˜ืจื™ื ื‘URL ื ื›ื•ื ื™ื ื•ืžืชืื™ืžื™ื

                              ื. ืขื“ื™ื™ืŸ ืœื ื”ืขืœื™ืชื™ ืืช ื”ื“ืฃ,

                              ืื– ืื™ืš ืืชื” ื™ื•ื“ืข ืฉื”ื•ื ืœื ืขื•ื‘ื“?

                              ื‘. ืื ื™ ืœื ื‘ื ื˜ืคืจื™

                              ืื ื™ ื›ืŸ, ื•ืœื›ืŸ ืื ื™ ืœื ืื•ื›ืœ ืœื‘ื“ื•ืง ืœืš.

                              ื’. ื”ื›ื ืกืชื™ ืืช ื” URL ืฉื”ื•ืคื™ืข ืœืื—ืจ ื”ืคืจื™ืกื”

                              ืื‘ืœ ื”ื•ืกืคืช ืœื• ืืช ื”ืคืจืžื˜ืจื™ื ื”ื ื“ืจืฉื™ื?

                              ืž ืžื ื•ืชืง
                              ืž ืžื ื•ืชืง
                              ืžืชืขื ื™ื™ืŸ ื‘ื”ื›ืœ
                              ื›ืชื‘ ื ืขืจืš ืœืื—ืจื•ื ื” ืขืœ ื™ื“ื™
                              #29

                              @ืข-ื”-ื“ื›ื•-ืข
                              ืื ื™ ืคื•ืชื— ืืช ื–ื” ื‘ื“ืคื“ืคืŸ (ืื ื™ ืขื•ืจืš ื‘ "ืขื•ืจืš ื˜ืงืกื˜ ") .
                              ื‘. ืกืœื™ื—ื” ืขืœ ื”ื‘ื•ืจื•ืช ืื‘ืœ ืœืžื” ืืชื” ืžืชื›ื•ื•ืŸ "ื”ืคืจืžื˜ืจื™ื ื”ื ื“ืจืฉื™ื"?

                              ืข"ื” ื“ื›ื•"ืขืข ืชื’ื•ื‘ื” 1 ืชื’ื•ื‘ื” ืื—ืจื•ื ื”
                              0
                              • ืž ืžืชืขื ื™ื™ืŸ ื‘ื”ื›ืœ

                                @ืข-ื”-ื“ื›ื•-ืข
                                ืื ื™ ืคื•ืชื— ืืช ื–ื” ื‘ื“ืคื“ืคืŸ (ืื ื™ ืขื•ืจืš ื‘ "ืขื•ืจืš ื˜ืงืกื˜ ") .
                                ื‘. ืกืœื™ื—ื” ืขืœ ื”ื‘ื•ืจื•ืช ืื‘ืœ ืœืžื” ืืชื” ืžืชื›ื•ื•ืŸ "ื”ืคืจืžื˜ืจื™ื ื”ื ื“ืจืฉื™ื"?

                                ืข"ื” ื“ื›ื•"ืขืข ืžื ื•ืชืง
                                ืข"ื” ื“ื›ื•"ืขืข ืžื ื•ืชืง
                                ืข"ื” ื“ื›ื•"ืข
                                ื›ืชื‘ ื ืขืจืš ืœืื—ืจื•ื ื” ืขืœ ื™ื“ื™
                                #30

                                @ืžืชืขื ื™ื™ืŸ-ื‘ื”ื›ืœ ื›ืชื‘ ื‘ื‘ืขื™ื” | ๐Ÿ˜ช apps script, ืžื” ืื ื™ ืžืคืกืคืกโ‰๏ธ:

                                @ืข-ื”-ื“ื›ื•-ืข
                                ืื ื™ ืคื•ืชื— ืืช ื–ื” ื‘ื“ืคื“ืคืŸ (ืื ื™ ืขื•ืจืš ื‘ "ืขื•ืจืš ื˜ืงืกื˜ ") .
                                ื‘. ืกืœื™ื—ื” ืขืœ ื”ื‘ื•ืจื•ืช ืื‘ืœ ืœืžื” ืืชื” ืžืชื›ื•ื•ืŸ "ื”ืคืจืžื˜ืจื™ื ื”ื ื“ืจืฉื™ื"?

                                ืื™ืš ืืชื” ืžื ืกื” ืœื”ืคืขื™ืœ ืืช ื–ื”?

                                ืž ืชื’ื•ื‘ื” 1 ืชื’ื•ื‘ื” ืื—ืจื•ื ื”
                                0
                                • ืข"ื” ื“ื›ื•"ืขืข ืข"ื” ื“ื›ื•"ืข

                                  @ืžืชืขื ื™ื™ืŸ-ื‘ื”ื›ืœ ื›ืชื‘ ื‘ื‘ืขื™ื” | ๐Ÿ˜ช apps script, ืžื” ืื ื™ ืžืคืกืคืกโ‰๏ธ:

                                  @ืข-ื”-ื“ื›ื•-ืข
                                  ืื ื™ ืคื•ืชื— ืืช ื–ื” ื‘ื“ืคื“ืคืŸ (ืื ื™ ืขื•ืจืš ื‘ "ืขื•ืจืš ื˜ืงืกื˜ ") .
                                  ื‘. ืกืœื™ื—ื” ืขืœ ื”ื‘ื•ืจื•ืช ืื‘ืœ ืœืžื” ืืชื” ืžืชื›ื•ื•ืŸ "ื”ืคืจืžื˜ืจื™ื ื”ื ื“ืจืฉื™ื"?

                                  ืื™ืš ืืชื” ืžื ืกื” ืœื”ืคืขื™ืœ ืืช ื–ื”?

                                  ืž ืžื ื•ืชืง
                                  ืž ืžื ื•ืชืง
                                  ืžืชืขื ื™ื™ืŸ ื‘ื”ื›ืœ
                                  ื›ืชื‘ ื ืขืจืš ืœืื—ืจื•ื ื” ืขืœ ื™ื“ื™
                                  #31

                                  @ืข-ื”-ื“ื›ื•-ืข ื›ืชื‘ ื‘ื‘ืขื™ื” | ๐Ÿ˜ช apps script, ืžื” ืื ื™ ืžืคืกืคืกโ‰๏ธ:

                                  ืื™ืš ืืชื” ืžื ืกื” ืœื”ืคืขื™ืœ ืืช ื–ื”?

                                  ื”ื ื” ื”ื“ืฃ ืฉื“ืจื›ื• ืื ื™ ืฉื•ืœื—.

                                  <!DOCTYPE html>
                                  <html lang="he" dir="rtl">
                                  <head>
                                  <meta charset="UTF-8">
                                  <meta name="viewport" content="width=device-width, initial-scale=1.0">
                                  <title>ืกืงืจ</title>
                                  <style>
                                    body {
                                      font-family: "Alef", sans-serif;
                                      background-color: #f5f6fa;
                                      direction: rtl;
                                      text-align: center;
                                      padding: 30px;
                                    }
                                    h1 { color: #2f3640; }
                                    .option { display: block; margin: 10px auto; text-align: right; max-width: 300px; }
                                    button {
                                      background-color: #40739e;
                                      color: white;
                                      padding: 10px 20px;
                                      border: none;
                                      border-radius: 6px;
                                      cursor: pointer;
                                      font-size: 16px;
                                      margin-top: 20px;
                                    }
                                    button:hover { background-color: #487eb0; }
                                    #results { max-width: 500px; margin: 40px auto; }
                                    #otherText { display: none; margin-top: 8px; width: 80%; padding: 5px; }
                                  </style>
                                  </head>
                                  <body>
                                  
                                  <h1>ืฉืืœืช ื”ืกืงืจ</h1>
                                  
                                  <div id="poll-container">
                                    <form id="poll-form">
                                      <label class="option"><input type="radio" name="choice" value="ืชืฉื•ื‘ื” 1">  ืชืฉื•ื‘ื” 1</label>
                                      <label class="option"><input type="radio" name="choice" value="ืชืฉื•ื‘ื  2"> ืชืฉื•ื‘ื” 2</label>
                                      <label class="option"><input type="radio" name="choice" value="ืชืฉื•ื‘ื” 3"> ืชืฉื•ื‘ื” 3</label>
                                      <label class="option"><input type="radio" name="choice" value="ืชืฉื•ื‘ื” 4"> ืชืฉื•ื‘ื” 4</label>
                                      <label class="option"><input type="radio" name="choice" value="ืชืฉื•ื”ื” 5"> ืชืฉื•ื‘ื” 5</label>
                                      <label class="option"><input type="radio" name="choice" value="ืชืฉื•ื‘ื” 6"> ืชืฉื•ื‘ื” 6</label>
                                      <label class="option"><input type="radio" name="choice" value="ืื—ืจ" id="otherOption"> ืื—ืจ:</label>
                                      <input type="text" id="otherText" placeholder="ื›ืชื•ื‘ ืชืฉื•ื‘ืชืš..." />
                                      <button type="submit" style="font-size:18px; font-weight:bold; padding:10px 20px;">
                                        ืฉืœื— ื”ืฆื‘ืขื”<br>
                                        <small style="font-size:12px; font-weight:normal;">ืฉื™ื โ™ฅ๏ธ ืœืื—ืจ ื”ืฉืœื™ื—ื” ืœื ื ื™ืชืŸ ืœืฉื ื•ืช ื”ืฆื‘ืขื”</small>
                                      </button>
                                    </form>
                                  </div>
                                  
                                  <div id="results" style="display:none;">
                                    <h2>ืชื•ืฆืื•ืช ื”ืกืงืจ</h2>
                                    <canvas id="resultsChart"></canvas>
                                  </div>
                                  
                                  <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
                                  <script>
                                  const SCRIPT_URL = "URL  ืœื apps script"; // ื”ื—ืœืฃ ื‘ืงื™ืฉื•ืจ ื”ึพDeploy ืฉืœืš
                                  
                                  const form = document.getElementById("poll-form");
                                  const pollContainer = document.getElementById("poll-container");
                                  const resultsDiv = document.getElementById("results");
                                  const otherOption = document.getElementById("otherOption");
                                  const otherText = document.getElementById("otherText");
                                  
                                  document.querySelectorAll('input[name="choice"]').forEach(r => {
                                    r.addEventListener('change', () => {
                                      otherText.style.display = otherOption.checked ? 'block' : 'none';
                                    });
                                  });
                                  
                                  form.addEventListener("submit", async (e) => {
                                    e.preventDefault();
                                    const selected = document.querySelector('input[name="choice"]:checked');
                                    if (!selected) return alert("ืื ื ื‘ื—ืจ ืชืฉื•ื‘ื”");
                                  
                                    let answer = selected.value;
                                    if (answer === "ืื—ืจ") {
                                      if (!otherText.value.trim()) return alert("ืื ื ืฆื™ื™ืŸ ืชืฉื•ื‘ืชืš");
                                      answer = otherText.value.trim();
                                    }
                                  
                                    try {
                                      const res = await fetch(SCRIPT_URL, {
                                        method: "POST",
                                        body: JSON.stringify({ answer }),
                                        headers: { "Content-Type": "application/json" },
                                      });
                                      const data = await res.json();
                                      if (data.status !== "ok") throw new Error(data.message || "ืฉื’ื™ืื” ื‘ืฉืœื™ื—ื”");
                                  
                                      localStorage.setItem("voted", "true");
                                      pollContainer.style.display = "none";
                                      showResults();
                                    } catch (err) {
                                      alert("ืื™ืจืขื” ืฉื’ื™ืื” ื‘ืฉืœื™ื—ื”: " + err.message);
                                    }
                                  });
                                  
                                  async function showResults() {
                                    resultsDiv.style.display = "block";
                                    try {
                                      const res = await fetch(SCRIPT_URL);
                                      const data = await res.json();
                                      const labels = Object.keys(data);
                                      const values = Object.values(data);
                                  
                                      const ctx = document.getElementById("resultsChart").getContext("2d");
                                      new Chart(ctx, {
                                        type: "bar",
                                        data: {
                                          labels,
                                          datasets: [{
                                            label: "ื›ืžื•ืช ื”ืฆื‘ืขื•ืช",
                                            data: values,
                                            backgroundColor: "rgba(64,115,158,0.7)"
                                          }]
                                        },
                                        options: {
                                          responsive: true,
                                          plugins: { legend: { display: false } },
                                          scales: { y: { beginAtZero: true } }
                                        }
                                      });
                                    } catch (err) {
                                      alert("ืœื ื ื™ืชืŸ ืœื˜ืขื•ืŸ ืชื•ืฆืื•ืช ื›ืจื’ืข.");
                                    }
                                  }
                                  
                                  if (localStorage.getItem("voted") === "true") {
                                    pollContainer.style.display = "none";
                                    showResults();
                                  }
                                  </script>
                                  </body>
                                  </html>
                                  
                                  

                                  ืข"ื” ื“ื›ื•"ืขืข ืชื’ื•ื‘ื” 1 ืชื’ื•ื‘ื” ืื—ืจื•ื ื”
                                  0
                                  • ืž ืžืชืขื ื™ื™ืŸ ื‘ื”ื›ืœ

                                    @ืข-ื”-ื“ื›ื•-ืข ื›ืชื‘ ื‘ื‘ืขื™ื” | ๐Ÿ˜ช apps script, ืžื” ืื ื™ ืžืคืกืคืกโ‰๏ธ:

                                    ืื™ืš ืืชื” ืžื ืกื” ืœื”ืคืขื™ืœ ืืช ื–ื”?

                                    ื”ื ื” ื”ื“ืฃ ืฉื“ืจื›ื• ืื ื™ ืฉื•ืœื—.

                                    <!DOCTYPE html>
                                    <html lang="he" dir="rtl">
                                    <head>
                                    <meta charset="UTF-8">
                                    <meta name="viewport" content="width=device-width, initial-scale=1.0">
                                    <title>ืกืงืจ</title>
                                    <style>
                                      body {
                                        font-family: "Alef", sans-serif;
                                        background-color: #f5f6fa;
                                        direction: rtl;
                                        text-align: center;
                                        padding: 30px;
                                      }
                                      h1 { color: #2f3640; }
                                      .option { display: block; margin: 10px auto; text-align: right; max-width: 300px; }
                                      button {
                                        background-color: #40739e;
                                        color: white;
                                        padding: 10px 20px;
                                        border: none;
                                        border-radius: 6px;
                                        cursor: pointer;
                                        font-size: 16px;
                                        margin-top: 20px;
                                      }
                                      button:hover { background-color: #487eb0; }
                                      #results { max-width: 500px; margin: 40px auto; }
                                      #otherText { display: none; margin-top: 8px; width: 80%; padding: 5px; }
                                    </style>
                                    </head>
                                    <body>
                                    
                                    <h1>ืฉืืœืช ื”ืกืงืจ</h1>
                                    
                                    <div id="poll-container">
                                      <form id="poll-form">
                                        <label class="option"><input type="radio" name="choice" value="ืชืฉื•ื‘ื” 1">  ืชืฉื•ื‘ื” 1</label>
                                        <label class="option"><input type="radio" name="choice" value="ืชืฉื•ื‘ื  2"> ืชืฉื•ื‘ื” 2</label>
                                        <label class="option"><input type="radio" name="choice" value="ืชืฉื•ื‘ื” 3"> ืชืฉื•ื‘ื” 3</label>
                                        <label class="option"><input type="radio" name="choice" value="ืชืฉื•ื‘ื” 4"> ืชืฉื•ื‘ื” 4</label>
                                        <label class="option"><input type="radio" name="choice" value="ืชืฉื•ื”ื” 5"> ืชืฉื•ื‘ื” 5</label>
                                        <label class="option"><input type="radio" name="choice" value="ืชืฉื•ื‘ื” 6"> ืชืฉื•ื‘ื” 6</label>
                                        <label class="option"><input type="radio" name="choice" value="ืื—ืจ" id="otherOption"> ืื—ืจ:</label>
                                        <input type="text" id="otherText" placeholder="ื›ืชื•ื‘ ืชืฉื•ื‘ืชืš..." />
                                        <button type="submit" style="font-size:18px; font-weight:bold; padding:10px 20px;">
                                          ืฉืœื— ื”ืฆื‘ืขื”<br>
                                          <small style="font-size:12px; font-weight:normal;">ืฉื™ื โ™ฅ๏ธ ืœืื—ืจ ื”ืฉืœื™ื—ื” ืœื ื ื™ืชืŸ ืœืฉื ื•ืช ื”ืฆื‘ืขื”</small>
                                        </button>
                                      </form>
                                    </div>
                                    
                                    <div id="results" style="display:none;">
                                      <h2>ืชื•ืฆืื•ืช ื”ืกืงืจ</h2>
                                      <canvas id="resultsChart"></canvas>
                                    </div>
                                    
                                    <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
                                    <script>
                                    const SCRIPT_URL = "URL  ืœื apps script"; // ื”ื—ืœืฃ ื‘ืงื™ืฉื•ืจ ื”ึพDeploy ืฉืœืš
                                    
                                    const form = document.getElementById("poll-form");
                                    const pollContainer = document.getElementById("poll-container");
                                    const resultsDiv = document.getElementById("results");
                                    const otherOption = document.getElementById("otherOption");
                                    const otherText = document.getElementById("otherText");
                                    
                                    document.querySelectorAll('input[name="choice"]').forEach(r => {
                                      r.addEventListener('change', () => {
                                        otherText.style.display = otherOption.checked ? 'block' : 'none';
                                      });
                                    });
                                    
                                    form.addEventListener("submit", async (e) => {
                                      e.preventDefault();
                                      const selected = document.querySelector('input[name="choice"]:checked');
                                      if (!selected) return alert("ืื ื ื‘ื—ืจ ืชืฉื•ื‘ื”");
                                    
                                      let answer = selected.value;
                                      if (answer === "ืื—ืจ") {
                                        if (!otherText.value.trim()) return alert("ืื ื ืฆื™ื™ืŸ ืชืฉื•ื‘ืชืš");
                                        answer = otherText.value.trim();
                                      }
                                    
                                      try {
                                        const res = await fetch(SCRIPT_URL, {
                                          method: "POST",
                                          body: JSON.stringify({ answer }),
                                          headers: { "Content-Type": "application/json" },
                                        });
                                        const data = await res.json();
                                        if (data.status !== "ok") throw new Error(data.message || "ืฉื’ื™ืื” ื‘ืฉืœื™ื—ื”");
                                    
                                        localStorage.setItem("voted", "true");
                                        pollContainer.style.display = "none";
                                        showResults();
                                      } catch (err) {
                                        alert("ืื™ืจืขื” ืฉื’ื™ืื” ื‘ืฉืœื™ื—ื”: " + err.message);
                                      }
                                    });
                                    
                                    async function showResults() {
                                      resultsDiv.style.display = "block";
                                      try {
                                        const res = await fetch(SCRIPT_URL);
                                        const data = await res.json();
                                        const labels = Object.keys(data);
                                        const values = Object.values(data);
                                    
                                        const ctx = document.getElementById("resultsChart").getContext("2d");
                                        new Chart(ctx, {
                                          type: "bar",
                                          data: {
                                            labels,
                                            datasets: [{
                                              label: "ื›ืžื•ืช ื”ืฆื‘ืขื•ืช",
                                              data: values,
                                              backgroundColor: "rgba(64,115,158,0.7)"
                                            }]
                                          },
                                          options: {
                                            responsive: true,
                                            plugins: { legend: { display: false } },
                                            scales: { y: { beginAtZero: true } }
                                          }
                                        });
                                      } catch (err) {
                                        alert("ืœื ื ื™ืชืŸ ืœื˜ืขื•ืŸ ืชื•ืฆืื•ืช ื›ืจื’ืข.");
                                      }
                                    }
                                    
                                    if (localStorage.getItem("voted") === "true") {
                                      pollContainer.style.display = "none";
                                      showResults();
                                    }
                                    </script>
                                    </body>
                                    </html>
                                    
                                    

                                    ืข"ื” ื“ื›ื•"ืขืข ืžื ื•ืชืง
                                    ืข"ื” ื“ื›ื•"ืขืข ืžื ื•ืชืง
                                    ืข"ื” ื“ื›ื•"ืข
                                    ื›ืชื‘ ื ืขืจืš ืœืื—ืจื•ื ื” ืขืœ ื™ื“ื™
                                    #32

                                    @ืžืชืขื ื™ื™ืŸ-ื‘ื”ื›ืœ ื›ืชื‘ ื‘ื‘ืขื™ื” | ๐Ÿ˜ช apps script, ืžื” ืื ื™ ืžืคืกืคืกโ‰๏ธ:

                                    const SCRIPT_URL = "URL  ืœื apps script"; // ื”ื—ืœืฃ ื‘ืงื™ืฉื•ืจ ื”ึพDeploy ืฉืœืš
                                    

                                    ื‘ืฉื•ืจื” ื”ื–ื• ืืชื” ืฆืจื™ืš ืœื”ื›ื ื™ืก ืืช ื”ืงื™ืฉื•ืจ ืฉื™ื™ื ืชืŸ ืœืš ืื—ืจื™ ื”ืคืจื™ืกื” ืฉืœ ื”ืกืงืจื™ืคื˜

                                    ืž ืชื’ื•ื‘ื” 1 ืชื’ื•ื‘ื” ืื—ืจื•ื ื”
                                    0
                                    • ืข"ื” ื“ื›ื•"ืขืข ืข"ื” ื“ื›ื•"ืข

                                      @ืžืชืขื ื™ื™ืŸ-ื‘ื”ื›ืœ ื›ืชื‘ ื‘ื‘ืขื™ื” | ๐Ÿ˜ช apps script, ืžื” ืื ื™ ืžืคืกืคืกโ‰๏ธ:

                                      const SCRIPT_URL = "URL  ืœื apps script"; // ื”ื—ืœืฃ ื‘ืงื™ืฉื•ืจ ื”ึพDeploy ืฉืœืš
                                      

                                      ื‘ืฉื•ืจื” ื”ื–ื• ืืชื” ืฆืจื™ืš ืœื”ื›ื ื™ืก ืืช ื”ืงื™ืฉื•ืจ ืฉื™ื™ื ืชืŸ ืœืš ืื—ืจื™ ื”ืคืจื™ืกื” ืฉืœ ื”ืกืงืจื™ืคื˜

                                      ืž ืžื ื•ืชืง
                                      ืž ืžื ื•ืชืง
                                      ืžืชืขื ื™ื™ืŸ ื‘ื”ื›ืœ
                                      ื›ืชื‘ ื ืขืจืš ืœืื—ืจื•ื ื” ืขืœ ื™ื“ื™
                                      #33

                                      @ืข-ื”-ื“ื›ื•-ืข ื›ืžื•ื‘ืŸ, ืืช ื–ื” ืขืฉื™ืชื™...

                                      ืข"ื” ื“ื›ื•"ืขืข ืชื’ื•ื‘ื” 1 ืชื’ื•ื‘ื” ืื—ืจื•ื ื”
                                      0
                                      • ืž ืžืชืขื ื™ื™ืŸ ื‘ื”ื›ืœ

                                        @ืข-ื”-ื“ื›ื•-ืข ื›ืžื•ื‘ืŸ, ืืช ื–ื” ืขืฉื™ืชื™...

                                        ืข"ื” ื“ื›ื•"ืขืข ืžื ื•ืชืง
                                        ืข"ื” ื“ื›ื•"ืขืข ืžื ื•ืชืง
                                        ืข"ื” ื“ื›ื•"ืข
                                        ื›ืชื‘ ื ืขืจืš ืœืื—ืจื•ื ื” ืขืœ ื™ื“ื™
                                        #34

                                        @ืžืชืขื ื™ื™ืŸ-ื‘ื”ื›ืœ ื›ืชื‘ ื‘ื‘ืขื™ื” | ๐Ÿ˜ช apps script, ืžื” ืื ื™ ืžืคืกืคืกโ‰๏ธ:

                                        @ืข-ื”-ื“ื›ื•-ืข ื›ืžื•ื‘ืŸ, ืืช ื–ื” ืขืฉื™ืชื™...

                                        ื—ืฉื‘ืชื™ ืฉื›ืชื‘ืช ืฉืขื“ื™ื™ืŸ ืœื ืคืจืกืช ืืช ื”ืกืงืจื™ืคื˜, ืขื›ืฉื™ื• ืื ื™ ืžื‘ื™ืŸ ืฉืจืง ืืช ื”HTML

                                        ื”ื‘ืขื™ื” ื‘ื“ืฃ ืฉื”ื•ื ืœื ืฉื•ืœื— ืฉื•ื ื˜ื•ืงืŸ, ืœืžืจื•ืช ืฉื‘ืกืงืจื™ืคื˜ ืžื•ื’ื“ืจ ื‘ื“ื™ืงื” ืฉืœ ื˜ื•ืงืŸ ื™ื™ื™ื—ื•ื“ื™.

                                        ืž ืชื’ื•ื‘ื” 1 ืชื’ื•ื‘ื” ืื—ืจื•ื ื”
                                        0
                                        • ืข"ื” ื“ื›ื•"ืขืข ืข"ื” ื“ื›ื•"ืข

                                          @ืžืชืขื ื™ื™ืŸ-ื‘ื”ื›ืœ ื›ืชื‘ ื‘ื‘ืขื™ื” | ๐Ÿ˜ช apps script, ืžื” ืื ื™ ืžืคืกืคืกโ‰๏ธ:

                                          @ืข-ื”-ื“ื›ื•-ืข ื›ืžื•ื‘ืŸ, ืืช ื–ื” ืขืฉื™ืชื™...

                                          ื—ืฉื‘ืชื™ ืฉื›ืชื‘ืช ืฉืขื“ื™ื™ืŸ ืœื ืคืจืกืช ืืช ื”ืกืงืจื™ืคื˜, ืขื›ืฉื™ื• ืื ื™ ืžื‘ื™ืŸ ืฉืจืง ืืช ื”HTML

                                          ื”ื‘ืขื™ื” ื‘ื“ืฃ ืฉื”ื•ื ืœื ืฉื•ืœื— ืฉื•ื ื˜ื•ืงืŸ, ืœืžืจื•ืช ืฉื‘ืกืงืจื™ืคื˜ ืžื•ื’ื“ืจ ื‘ื“ื™ืงื” ืฉืœ ื˜ื•ืงืŸ ื™ื™ื™ื—ื•ื“ื™.

                                          ืž ืžื ื•ืชืง
                                          ืž ืžื ื•ืชืง
                                          ืžืชืขื ื™ื™ืŸ ื‘ื”ื›ืœ
                                          ื›ืชื‘ ื ืขืจืš ืœืื—ืจื•ื ื” ืขืœ ื™ื“ื™
                                          #35

                                          @ืข-ื”-ื“ื›ื•-ืข ื›ืชื‘ ื‘ื‘ืขื™ื” | ๐Ÿ˜ช apps script, ืžื” ืื ื™ ืžืคืกืคืกโ‰๏ธ:

                                          @ืžืชืขื ื™ื™ืŸ-ื‘ื”ื›ืœ ื›ืชื‘ ื‘ื‘ืขื™ื” | ๐Ÿ˜ช apps script, ืžื” ืื ื™ ืžืคืกืคืกโ‰๏ธ:

                                          @ืข-ื”-ื“ื›ื•-ืข ื›ืžื•ื‘ืŸ, ืืช ื–ื” ืขืฉื™ืชื™...

                                          ื—ืฉื‘ืชื™ ืฉื›ืชื‘ืช ืฉืขื“ื™ื™ืŸ ืœื ืคืจืกืช ืืช ื”ืกืงืจื™ืคื˜, ืขื›ืฉื™ื• ืื ื™ ืžื‘ื™ืŸ ืฉืจืง ืืช ื”HTML

                                          ื”ื‘ืขื™ื” ื‘ื“ืฃ ืฉื”ื•ื ืœื ืฉื•ืœื— ืฉื•ื ื˜ื•ืงืŸ, ืœืžืจื•ืช ืฉื‘ืกืงืจื™ืคื˜ ืžื•ื’ื“ืจ ื‘ื“ื™ืงื” ืฉืœ ื˜ื•ืงืŸ ื™ื™ื™ื—ื•ื“ื™.

                                          ื’ื ื”ืกืงืจื™ืคื˜ื™ื ืฉืœื ื”ื™ื” ื‘ื”ื ื‘ืงืฉื” ืฉืœ ื˜ื•ืงืŸ ืœื ืขื‘ื“ื•.

                                          ืชื’ื•ื‘ื” 1 ืชื’ื•ื‘ื” ืื—ืจื•ื ื”
                                          0

                                          • ื”ืชื—ื‘ืจื•ืช

                                          • ืื™ืŸ ืœืš ื—ืฉื‘ื•ืŸ ืขื“ื™ื™ืŸ? ื”ืจืฉืžื”

                                          • ื”ืชื—ื‘ืจื• ืื• ื”ื™ืจืฉืžื• ื›ื“ื™ ืœื—ืคืฉ.
                                          • ืคื•ืกื˜ ืจืืฉื•ืŸ
                                            ืคื•ืกื˜ ืื—ืจื•ืŸ
                                          0
                                          • ื—ื•ืงื™ ื”ืคื•ืจื•ื
                                          • ืคื•ืคื•ืœืจื™
                                          • ืœื ื ืคืชืจ
                                          • ืžืฉืชืžืฉื™ื
                                          • ื—ื™ืคื•ืฉ ื’ื•ื’ืœ ื‘ืคื•ืจื•ื
                                          • ืฆื•ืจ ืงืฉืจ