Чтение гугл таблицы

Поддержка
  • Пишу вот такой nodejs код в bas:

    const { google } = require("googleapis");
    
    const auth = new google.auth.GoogleAuth({
        keyFile: [[GOOGLE_DATA]].split("\\").join("/"),
        scopes : ["https://www.googleapis.com/auth/spreadsheets"]
    });
    
    async function readSheet() {
        const sheets        = google.sheets({ version: "v4", auth });
        const spreadsheetId = "1ZI_7dZ6GmpZ6tVNi0hAtjWyMinExzD8PaGmFlvSGwo1";
        const range         = "Лист1!A2:C100000000";
        
        try {
            const res  = await sheets.spreadsheets.values.get({ spreadsheetId, range });
            const rows = res.data.values;
    
            let randomIdx = Math.floor(Math.random() * rows.length);
    
            if (randomIdx === -1)
                randomIdx = 0;
    
            const [fio, phone, mail] = rows[randomIdx];
    
            return phone;
        } catch(error) {
            console.error(`Error: ${error}`);
        }
    }
    
    (async() => {
        const data = await readSheet();
    
        [[RANDOM_PHONE]] = data;
    })();
    

    но переменная [[RANDOM_PHONE]] в себе хранит значение по умолчанию ("")
    также когда пытаюсь вывести в console.log phone то также ничего не получаю
    я так понимаю ошибка из за асинхронности, только не знаю что именно обновить

    запускаю этот код вне bas и все отрабатывает

  • @quod, уберите обёртку в анонимную функцию в конце, чтобы было просто так:

    const data = await readSheet();
    
    [[RANDOM_PHONE]] = data;
    

    Node.js код в BAS уже выполняется в асинхронной среде, поэтому вы можете спокойно использовать await