Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 解析空行时停止google脚本数据导入_Javascript_Google Apps Script_Google Sheets - Fatal编程技术网

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谢谢你或者你的反馈,我修改了我的答案。让我知道它是否对你有效。检查。即使在看到按钮应该放在哪里的说明后,也要两次尝试才能注意到它。