Google apps script 基于某些标题值删除列Google Apps脚本

Google apps script 基于某些标题值删除列Google Apps脚本,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我正试图根据条件删除某些列。就像在这张纸上一样 需要删除包含“\u信心”或“\u估计信心”或“\u估计信心准确性”的列。我正在尝试使用以下代码: function deleteColumns() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getActiveSheet(); var dataRange = sheet.getRange("A1:A20"); var data = sheet.getRange(

我正试图根据条件删除某些列。就像在这张纸上一样

需要删除包含“\u信心”或“\u估计信心”或“\u估计信心准确性”的列。我正在尝试使用以下代码:

function deleteColumns() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var dataRange = sheet.getRange("A1:A20");
var data = sheet.getRange("A1:A20");
var values = data.getValues();
var numRows = values.length;
var numCols = values[0].length;

for (var col = numCols-1; col > 0; col--) {
 for (var row = 0; row < numRows; row++) {
  switch (values[row][col]) {      
    case "_confidence":
    case "_estimatedconfidence":
    case "_estimatedconfidence accuracy":
      sheet.deleteColumn(col+1);
      continue;                       
      break;
   }
  }
 }
}
函数deleteColumns(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getActiveSheet();

var dataRange=sheet.getRange(“A1:A20”); var数据=sheet.getRange(“A1:A20”); var values=data.getValues(); var numRows=values.length; var numCols=值[0]。长度; 对于(var col=numCols-1;col>0;col--){ 对于(变量行=0;行
我已经从原始源代码修改了这段代码。此脚本不返回任何内容


另外,我还没有把所有的栏目都包括在上面的表格中。最多可以有100列进行处理。

我需要先删除最大的列,这样在现实生活中,您可能需要将最终数组从最大到最小排序。但我想这会让你达到你想去的地方

function deleteColumns() 
{
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var dataR = sheet.getDataRange();
  var dataA = dataR.getValues();
  var colA = [];
  var re = /(.*_confidence|.*_estimatedconfidence|.*_estimatedconfidence accuracy)/
  for (var i = 0; i<dataA.length;i++) 
  {
    for(var j = 0; j<dataA[i].length;j++)
    {
      if(String(dataA[i][j]).match(re) && colA.indexOf(j+1)==-1)
      {
        colA.push(j+1);
      }
    }

  }
  colA.sort(compareNumbers);
  colA.reverse();
  for(var i =0;i < colA.length; i++)
  {
    sheet.deleteColumn(colA[i]);
  }
}

function compareNumbers(a, b) {
  return a - b;// I pulled this function out of the MDN website
}
函数deleteColumns()
{
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getActiveSheet();
var dataR=sheet.getDataRange();
var dataA=dataR.getValues();
var=[];
var re=/(.*U置信度.*U估计置信度.*U估计置信精度)/

对于(var i=0;ivar数据范围=sheet.getRange(“A1:A20”);var数据=sheet.getRange(“A1:A20”);var值=data.getValues();???您正在测试的所有值都来自A列。每个case语句都必须有删除该列的说明。仅写最后一个case的方式(如果为true)会导致删除该列。啊,是的。@ScampMichael谢谢,我将(A1:A20)改为(A1:H20)并添加了sheet.delete列(列+1);对于每种情况,但工作表中仍然没有更改。switch/case语句如果要在所有情况下执行相同的操作,则不太合适。如果只需要列标题,则在i>0时中断。谢谢,@cooper。代码在我共享的工作表上运行得很好,但实际上,列长度可以达到100。当我尝试时使用更多列运行代码(大约100列),我得到那个些列超出了范围。错误。我认为问题是我的排序是按字母顺序排序,而不是按数字排序。可能必须为它添加排序函数。很抱歉,我并没有想到这一点。我从中提取了一个函数,它将强制它比较数字,这可能会解决问题。我正在使用代码到目前为止没有任何改变。通过添加排序函数,您的意思是在代码中添加一行还是一个独立的函数?对不起,但我对javascript的了解非常有限:-)。