есть ли способ заставить эту функцию listMajors () возвращать двумерный массив в переменную, которую я могу использовать в глобальной области видимости?
Да и вам необходимо создать переменную вне объявления функции , а затем назначить вывод функции созданной переменной.
Здесь пошаговое руководство по созданию массива
- создания
majors[]
массива - добавления
majors[]
значений массива из столбцов Имя и Majors - список
majors[]
значения, чтобы увидеть все данные - список
majors[1]
значения, чтобы увидеть имя и основные (Анна , Engli sh)
// 1
let majors = [];
function listMajors(auth) {
const sheets = google.sheets({version: 'v4', auth});
sheets.spreadsheets.values.get({
spreadsheetId: '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms',
range: 'Class Data!A2:E',
}, (err, res) => {
if (err) return console.log('The API returned an error: ' + err);
const rows = res.data.values;
if (rows.length) {
// 2
rows.map((row) => {
majors.push(`${row[0]}, ${row[4]}`);
});
} else {
console.log('No data found.');
}
// 3
console.log(majors);
console.log('--------------------')
// 4
console.log(majors[2])
});
}
Это вывод console.log()
:
[
'Alexandra, English', 'Andrew, Math',
'Anna, English', 'Becky, Art',
'Benjamin, English', 'Carl, Art',
'Carrie, English', 'Dorothy, Math',
'Dylan, Math', 'Edward, English',
'Ellen, Physics', 'Fiona, Art',
'John, Physics', 'Jonathan, Math',
'Joseph, English', 'Josephine, Math',
'Karen, English', 'Kevin, Physics',
'Lisa, Art', 'Mary, Physics',
'Maureen, Physics', 'Nick, Art',
'Olivia, Physics', 'Pamela, Math',
'Patrick, Art', 'Robert, English',
'Sean, Physics', 'Stacy, Math',
'Thomas, Art', 'Will, Math'
]
--------------------
Anna, English
Теперь вы можете использовать массив majors[]
так, как захотите.
Если вы хотите больше контролировать свои данные, вы можете создать major{}
объект
Почти такие же шаги, как указано выше:
- создать
data{}
объект - добавить к
data{}
объекту все значения - список
data{}
значений, чтобы увидеть все данные - создать
listData()
весело ction для более простого вывода строки - список Анна в
data{}
, который находится в строке 4 в Google Sheets, но мы избегаем первой строки, что означает -1, поэтому в data{}
ее индекс равен 2.
// 1
let data = {
names : [],
gender : [],
classLevel : [],
homeState : [],
major : [],
extracurricularActivity : []
}
// 4
function listData(row){
console.log(data.names[row]);
console.log(data.gender[row]);
console.log(data.classLevel[row]);
console.log(data.homeState[row]);
console.log(data.major[row]);
console.log(data.extracurricularActivity[row]);
}
function listMajors(auth) {
const sheets = google.sheets({version: 'v4', auth});
sheets.spreadsheets.values.get({
spreadsheetId: '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms',
range: 'Class Data!A2:F',
}, (err, res) => {
if (err) return console.log('The API returned an error: ' + err);
const rows = res.data.values;
if (rows.length) {
// 2
rows.map((row) => {
data.names.push(row[0]);
data.gender.push(row[1]);
data.classLevel.push(row[2]);
data.homeState.push(row[3]);
data.major.push(row[4]);
data.extracurricularActivity.push(row[5]);
});
} else {
console.log('No data found.');
}
// 3
console.log(data);
console.log('--------------------')
// 5
listData(2);
});
}
Здесь вы можете увидеть вывод для listData(2)
:
Anna
Female
1. Freshman
NC
English
Basketball
Есть более продвинутые способы сделать это, взять Посмотрите на ссылку. Я надеюсь, что эти примеры помогут вам запустить API Google Sheets с Node.js
Ссылка: