NoneCreate WriteStream перезаписывает данные в CSV-файл. Данные из Google Drive API. Массив идентификаторов файлов, созданных из файла журнала
Я пытаюсь извлечь файлы CSV с моего диска Google. Файлы, которые я хочу извлечь, сначала просматриваются в файле журнала, и создается новый массив идентификаторов файлов. Этот массив подается в цикл for, который загружает файлы, а затем передает их в другой файл. Данные перезаписываются и возникают некоторые ошибки в данных (неполные строки из CSV). Я не уверен, что использую правильный метод, и не уверен, что искать, чтобы узнать лучший подход.
for (пусть i = 0; i Это консольный журнал из этого кода: Файл идентификаторов в файл журнала: [ '' ] новый массив [ '1Rte0r2uMQWjs20OFr5aeGdFlsjBfzdY2',
'1xkbjzk2dW1TK6JEz4Gq6Ezi4gkij-LFP',
'172FNhatzfr8UOpxyQ2Jlu59RZBgzXYD2',
'1NB9phAx-iTaXAzsJIw7nKijPOAM3xrVh',
'1KNRaF37M68AxztI0OJjsHRw7rXESvQAy',
'1RxiqfEFcyZcMoOPbRN4__BfY_5GC-xGN',
'1LlJdA1UjI8MAV_j4UyYP4Sd_XgTUwHvH' ] Готово 1xkbjzk2dW1TK6JEz4Gq6Ezi4gkij- LFP Совершено 1NB9phAx-iTaXAzsJIw7nKijPOAM3xrVh Закончили 1KNRaF37M68AxztI0OJjsHRw7rXESvQAy Совершено 1Rte0r2uMQWjs20OFr5aeGdFlsjBfzdY2 Совершено 1RxiqfEFcyZcMoOPbRN4__BfY_5GC-xGN Готово 172FNhatzfr8UOpxyQ2Jlu59RZBgzXYD2 Готово 1LlJdA1UjI8MAV_j4UyYP4Sd_XgTUwHvHfs.readFile('credentials.json', (err, content) => {
if (err) return console.log('Error loading client secret file:', err);
// Authorize a client with credentials, then call the Google Drive API.
//authorize(JSON.parse(content), listFiles);
authorize(JSON.parse(content), getFile);
//authorize(JSON.parse(content), uploadFile);
});
function authorize(credentials, callback) {
const { client_secret, client_id, redirect_uris } = credentials.installed;
const oAuth2Client = new google.auth.OAuth2(
client_id, client_secret, redirect_uris[0]);
// Check if we have previously stored a token.
fs.readFile(TOKEN_PATH, (err, token) => {
if (err) return getAccessToken(oAuth2Client, callback);
oAuth2Client.setCredentials(JSON.parse(token));
//callback(oAuth2Client);//list files and upload file
callback(oAuth2Client, newDataArray);//get file
});
}
function getFile(auth, newDataArray){
const drive = google.drive({ version: 'v3', auth });
const dest = (fs.createWriteStream('./data.csv'));
drive.files.get({fileId: newDataArray[i], alt: 'media'}, {responseType: 'stream'},
function(err, res){
return res.data
.on('end', () => {
console.log(`Done ${newDataArray[i]}` );
})
.on('error', err => {
console.log('Error', err);
})
.pipe(dest);
})