Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.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
Google apps script 如何删除包含子字符串或为空的列?_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 如何删除包含子字符串或为空的列?

Google apps script 如何删除包含子字符串或为空的列?,google-apps-script,google-sheets,Google Apps Script,Google Sheets,下面是我的代码: delCol跟踪删除了多少列(以保持迭代对齐) 工作表是活动的电子表格 data是我正在搜索的行中的值数组,通过SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(“2:2”).getValues()检索 函数deleteRows(){ var-delCol=0; var data=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRan

下面是我的代码:

delCol
跟踪删除了多少列(以保持迭代对齐)

工作表
是活动的电子表格

data
是我正在搜索的行中的值数组,通过
SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(“2:2”).getValues()检索

函数deleteRows(){
var-delCol=0;
var data=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(“2:2”).getValues();
var sheet=SpreadsheetApp.getActiveSheet();
对于(var i=0;i-1 | |数据[0][i-delCol]==“”){
表1.删除列(i-delCol+1);
delCol++;
}
}
}
当我运行这段代码时,每一列都会被删除

试试这个:

function runOne(s) {
  var s=s||'deleteme';//The substring
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Sheet1');
  var rg=sh.getDataRange();
  var vA=transpose(rg.getValues());
  var d=0;
  for(var i=0;i-d<vA.length;i++) {
    var deleted=false;
    if(vA[i-d].join('').length==0) {
      vA.splice(i-d++,1);
      deleted=true;
    }
    var rs=vA[i-d].join(' ');
    if(!deleted && rs.indexOf(s)!=-1) {
      vA.splice(i-d++,1);
    }
  } 
  sh.clearContents();
  var oA=transpose(vA);
  sh.getRange(1,1,oA.length,oA[0].length).setValues(oA);
}

function transpose(a) {
  return Object.keys(a[0]).map(function (c) { return a.map(function (r) { return r[c]; }); });
}
功能runOne(s){
var s=s | |“deleteme”;//子字符串
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Sheet1');
var rg=sh.getDataRange();
var vA=转置(rg.getValues());
var d=0;
for(var i=0;i-d当您调用范围中包含的2D数组时,该数组中的数据将复制到脚本运行时的内存中。之后,如果您修改范围的数据(使用诸如的调用),将修改工作表中的数据,但不会修改2D数组中的数据

更具体地说,代码中的错误是在评估if语句的条件时。在访问2D数组时,您考虑了
delCol
,而实际上,您不需要这样做。请参阅下面的代码更正:

函数deleteRows(){
var-delCol=0;
var data=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(“2:2”).getValues();
var sheet=SpreadsheetApp.getActiveSheet();
对于(var i=0;i-1 | |数据[0][i]=“”){
表1.删除列(i-delCol+1);
delCol++;
}
}
}

请共享电子表格,您将删除您不打算的某个列,因为您从开始栏删除到最后一列,请将其反转,以(var i=数据(0)。长度1;i>0;i)-高兴地我能够帮助!)请考虑。欢呼!希望我能投票,但我还没有足够的声誉!
function runOne(s) {
  var s=s||'deleteme';//The substring
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Sheet1');
  var rg=sh.getDataRange();
  var vA=transpose(rg.getValues());
  var d=0;
  for(var i=0;i-d<vA.length;i++) {
    var deleted=false;
    if(vA[i-d].join('').length==0) {
      vA.splice(i-d++,1);
      deleted=true;
    }
    var rs=vA[i-d].join(' ');
    if(!deleted && rs.indexOf(s)!=-1) {
      vA.splice(i-d++,1);
    }
  } 
  sh.clearContents();
  var oA=transpose(vA);
  sh.getRange(1,1,oA.length,oA[0].length).setValues(oA);
}

function transpose(a) {
  return Object.keys(a[0]).map(function (c) { return a.map(function (r) { return r[c]; }); });
}