Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

169
Views
Can't loop through a google sheet after 9 (returns 1 then 0)

I'm have having a bit of trouble setting up a dynamic google sheet to fetch data. If the option value goes after 10, it will not work; the code returns the value as a separate 1 then 0. And so on, value 11 would be 1 and 1.

Any help would be awesome and thank you so so much!

<select name="examples" id="selectEvents" class="my-events">
    <option value="" placeholder="select" selected>Select</option>
</select>

<h2 class="event-name" ></h2>
<h3 class="event-info" ></h3>
<script>
    //variables for spreadsheet

    const eventName = document.querySelector('.event-name');
    const eventInfo = document.querySelector('.event-info');

    //variables for sheet
    const sheetId = '1wJp22oIlG29X6FDszaPoh71IvbwrZYoWRqwwYy9gbQg';
    const base = `https://docs.google.com/spreadsheets/d/${sheetId}/gviz/tq?`;
    const sheetName = 'sheet1';
    const query = encodeURIComponent('Select *');
    const url = `${base}&sheet=${sheetName}&tq=${query}`;

    fetch(url)
        .then(res => res.text())
        .then(rep => {
            //Remove additional text and extract only JSON:
            const jsonData = JSON.parse(rep.substring(47).slice(0, -2));

            const dataRows = jsonData.table.rows;
            const select = document.getElementById('selectEvents');

            for (const r of dataRows) {
                select.options[select.options.length] = new Option(r.c[1].v, Number(select.options.length + 1));
            }

            const selectElement = document.querySelector('.my-events');

            selectElement.addEventListener('change', event => {
                for (let i of Object.values(selectEvents.value)) {
                    if (selectEvents.value === i) {
                        eventName.textContent = jsonData.table.rows[i - 2].c[1].v;
                        eventInfo.textContent = jsonData.table.rows[i - 2].c[2].v;
                    }
                }
            });
        });
</script>
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

May be, try +select.options.length + 1 by adding + in front of select.options.length

select.options[select.options.length] = new Option(r.c[1].v, Number(+select.options.length + 1));
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!