#javascript #google-apps-script #google-sheets
#javascript #google-apps-script #google-sheets
Вопрос:
Я бы хотел, чтобы импорт данных останавливался при разборе пустой строки. Я пробовал этот код, но он по-прежнему импортирует данные за пустые строки:
function readInAllData() {
var threads = GmailApp.search("subject:Report #7");
var message = threads[0].getMessages()[threads[0].getMessages().length-1];
var attachment = message.getAttachments()[0];
if (attachment.getContentType() === "text/csv") {
attachment.setContentTypeFromExtension();
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Y input");
var csvData = Utilities.parseCsv(attachment.getDataAsString(), ",");
var range = sheet.getRange("A:R");
var row = 0;
range.clearContent();
for (var row=0; row<csvData.length; row ) {
sheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);
if (!csvData[row].join("")) break;
}
return null;
}
Ответ №1:
Объяснение:
Вам не нужен цикл for, чтобы найти первую пустую строку в ваших данных. Вы можете использовать findIndex и every, чтобы найти первую строку, для которой каждая ячейка пуста, а затем установить значения до этой строки:
const pos = csvData.findIndex(r => r.every(c=>c=='') );
sheet.getRange(1, 1, pos, csvData[0].length).setValues(csvData.slice(0,pos));
Решение:
function readInAllData() {
var threads = GmailApp.search("subject:Report #7");
var message = threads[0].getMessages()[threads[0].getMessages().length-1];
var attachment = message.getAttachments()[0];
if (attachment.getContentType() === "text/csv") {
attachment.setContentTypeFromExtension();
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Y input");
var csvData = Utilities.parseCsv(attachment.getDataAsString(), ",");
var range = sheet.getRange("A:R");
range.clearContent();
const pos = csvData.findIndex(r => r.every(c=>c=='') );
sheet.getRange(1, 1, pos, csvData[0].length).setValues(csvData.slice(0,pos));
return null;
}
}
Комментарии:
1. Спасибо за ваш ответ, Мариос! Проблема в том, что я хотел бы остановить импорт данных при появлении первой пустой строки. Эта пустая строка отделяет данные, которые я хочу импортировать, от данных, которые я не хочу импортировать. Под пустой строкой находится длинная строка нежелательных значений, которая мешает моим расчетным показателям в таблице Google.
2. @Snail Спасибо за ваш отзыв, я изменил свой ответ. Дайте мне знать, сработало ли это для вас.
3. проверено. Даже после просмотра инструкции, где должна находиться эта кнопка, потребовалось две попытки, чтобы заметить это.