所以我现在对这个问题进行了一段时间的讨论,而不是百分之百地确定为什么这段代码不起作用。
我从之前的SO帖子中获取了代码,从那里我改变了脚本以完成我需要的操作。
function onOpen() {
// get active spreadsheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
// create menu
var menu = [{name: "Evaluate Column J/Call Duration", functionName: "deleteRow"}];
// add to menu
ss.addMenu("Delete Calls Under 1 Minute", menu);
}
function deleteRow() {
// get active spreadsheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
// get active/selected row
var activeRow = ss.getActiveRange().getRowIndex();
// get content column J
var columnJ = ss.getRange("J"+activeRow).getFontColor();
// evaluate whether cell has white text or not
if (columnJ == 'white' || columnJ == '#FFFFFF') {
ss.deleteRow(parseInt(activeRow));
}
}
基本上我有一个从超级古老的呼叫跟踪软件导出的电子表格。我们的主要问题是我们需要取出任何不到1分钟的电话和任何重复的电话。因此,我们为两者添加了条件格式。这是为了摆脱任何1分钟的呼叫,这反过来应该删除整行。
有人对此有任何想法吗?谢谢你们。
答案 0 :(得分:1)
第j列是10.颜色在' #ffffff'格式。红色是#ff0000'。此函数将删除所选列中具有所选颜色的行。
function jakeDeleteRow(column,color) {
var column = (typeof(column)!='undefined')?column:10;
var color = (typeof(color)!='undefined')?color:'#ff0000;
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sht = ss.getActiveSheet();
var rng = ss.getDataRange();
var rngA = rng.getBackgrounds()
for(var i=rngA.length-1;i>-1;i--)
{
if(rngA[i][column-1]==color)
{
sht.deleteRow(i+1);
}
}
}