将行检查空白的moverows脚本更改为连续保留空白的特定单元格

时间:2019-04-19 23:57:17

标签: google-apps-script

我从Cooper那里获得了脚本的帮助,但是我需要进行一些修改,如果该行中的单元格为空,则该脚本基本上会通过自定义对话框移动。 我想完成的是仅检查一行中的特定单元格。 例如第1和4行是必填项,第2和3行不是必填项。 这是到目前为止我得到的代码。

    function Moverows57654() { 

 var ss=SpreadsheetApp.getActive();
 var sourceSheet=ss.getSheetByName("sheet1");
 var targetSheet=ss.getSheetByName("sheet2");
 var sourceRange=sourceSheet.getRange("A2:T2");
 var values=sourceRange.getValues();
 var range0=sourceSheet.getRange("A2:B2");
 var range1=sourceSheet.getRange("D2:E2"); 
 var firstFreeRow=goToFirstRowAfterLastRowWithData(targetSheet, "A:AD");
 var noBlanks=true;
 var bA=[];
 var ro=sourceRange.getRow();
 var co=sourceRange.getColumn();
 for(var ri=0;ri<values.length;ri++) {
 for(var ci=0;ci<values[ri].length;ci++) {
  if(!values[ri][ci]) {
    noBlanks=false;
    bA.push(sourceSheet.getRange(ri+ro,ci+co).getA1Notation());
  }
   }
    }
 if(noBlanks) {

  targetSheet.getRange(firstFreeRow,1,values.length,values[0].length)
 .setValues(values);      targetSheet.getRange(firstFreeRow, 1, values.length, values[0].length)

    .setValues(values);
range0.clearContent();
range1.clearContent();

//createPdf()//function gets started
}else{
SpreadsheetApp.getUi().alert('Sorry there are blanks in the following cells: ' + bA.join(', '));
return;
 }

1 个答案:

答案 0 :(得分:0)

尝试一下:

function Moverows57654() { 
  var ss=SpreadsheetApp.getActive();
  var sourceSheet=ss.getSheetByName("sheet1");
  var targetSheet=ss.getSheetByName("sheet2");
  var sourceRange=sourceSheet.getRange("A2:T2");
  var values=sourceRange.getValues();
  var range0=sourceSheet.getRange("A2:B2");
  var range1=sourceSheet.getRange("D2:E2");
  //var firstFreeRow=targetSheet.getLastRow() + 1; 
  var firstFreeRow=goToFirstRowAfterLastRowWithData(targetSheet, "A:AD");
  var noBlanks=true;
  var bA=[];
  var skA=[1,2];//column -1
  var ro=sourceRange.getRow();
  var co=sourceRange.getColumn();
  for(var ri=0;ri<values.length;ri++) {
    for(var ci=0;ci<values[ri].length;ci++) {
      if(!values[ri][ci] && skA.indexOf(ci)==-1) {
        noBlanks=false;
        bA.push(sourceSheet.getRange(ri+ro,ci+co).getA1Notation());
      }
    }
  }
  if(noBlanks) {

    targetSheet.getRange(firstFreeRow,1,values.length,values[0].length)
    .setValues(values);      targetSheet.getRange(firstFreeRow, 1, values.length, values[0].length)

    .setValues(values);
    range0.clearContent();
    range1.clearContent();

    //createPdf()//function gets started
  }else{
    SpreadsheetApp.getUi().alert('Sorry there are blanks in the following cells: ' + bA.join(', '));
    return;
  }
 }