Google apps script 基于某些标题值删除列Google Apps脚本
我正试图根据条件删除某些列。就像在这张纸上一样 需要删除包含“\u信心”或“\u估计信心”或“\u估计信心准确性”的列。我正在尝试使用以下代码: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(
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的了解非常有限:-)。