Получение TypeError doc.sheetsByTitle не является функцией, google-электронная таблица

#node.js #asynchronous #npm #google-sheets-api

#node.js #асинхронный #npm #google-sheets-api

Вопрос:

Я использую «google-spreadsheet» и успешно создаю новый рабочий лист, но по какой-то причине я не могу управлять им или даже выбирать его. Я просматривал документы и сайты, но я все еще не мог найти решение.

 async function startup () {
    const doc = new GoogleSpreadsheet(config.sheetID);

    let creds = require('login data')

    await doc.useServiceAccountAuth(creds);

    await doc.loadInfo(); // loads document properties and worksheets
    console.log(doc.title);

    for (var i = 0; i < config.channelID.length; i  ) {
        doc.addSheet({ title: config.channelID[i] })

        let sheet = await doc.sheetsByTitle(config.channelID[i])
        
    }
}
  

(node:50552) UnhandledPromiseRejectionWarning: TypeError: doc.sheetsByTitle is not a function

Ответ №1:

Когда я увидел скрипт «node-google-spreadsheet», кажется, что doc.sheetsByTitle он возвращает объект. Ссылка Я подумал, что это может быть причиной вашей проблемы. Итак, как насчет следующей модификации?

От:

 for (var i = 0; i < config.channelID.length; i  ) {
    doc.addSheet({ title: config.channelID[i] })

    let sheet = await doc.sheetsByTitle(config.channelID[i])
    
}
  

Для:

 for (var i = 0; i < config.channelID.length; i  ) {
  await doc.addSheet({ title: config.channelID[i] });
  let sheet = doc.sheetsByTitle[config.channelID[i]];
  console.log(sheet.title);  // You can check the added sheet name here.
}
  

Или, в вашем случае, doc.addSheet также возвращает объект листа. Итак, вы можете использовать следующий скрипт.

 for (var i = 0; i < config.channelID.length; i  ) {
  const addedSheet = await doc.addSheet({ title: config.channelID[i] });
  console.log(addedSheet.title);  // You can check the added sheet name here.
}
  

Примечание:

  • В этом измененном скрипте, пожалуйста, используйте await to doc.addSheet .
  • Пожалуйста, используйте последнюю версию node-google-spreadsheet. Теперь, похоже, что это google-spreadsheet@3.0.13 .

Ссылка: