Javascript 解析空行时停止google脚本数据导入
我希望在分析空行时停止数据导入。我尝试过这段代码,但它仍然通过空行导入数据:Javascript 解析空行时停止google脚本数据导入,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()[
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;
}
函数readInAllData(){
var threads=GmailApp.search(“主题:报告#7”);
var message=threads[0].getMessages()[threads[0].getMessages().length-1];
var attachment=message.getAttachments()[0];
如果(附件.getContentType()=“text/csv”){
附件.setContentTypeFromExtension();
var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“Y输入”);
var csvData=Utilities.parseCsv(attachment.getDataAsString(),“,”);
var范围=sheet.getRange(“A:R”);
var行=0;
range.clearContent();
对于(var行=0;行解释:
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;
}
}
您不需要for循环来查找数据中的第一个空行。您可以使用和来查找每个单元格都为空的第一行,然后将值设置为此行:
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;
}
}
谢谢你的回答,Marios!问题是,当第一个空行出现时,我想停止数据导入。这一空行将我要导入的数据与我不想导入的数据分开。在空行下面有一长行不需要的值,这些值干扰了我在谷歌工作表上计算的指标。@Snail谢谢你或者你的反馈,我修改了我的答案。让我知道它是否对你有效。检查。即使在看到按钮应该放在哪里的说明后,也要两次尝试才能注意到它。