我正在尝试创建一个脚本来删除Google表格第1行中包含特定数据的行。它涉及创建一个数组,并使其遍历该列中的单元并决定是否应删除它。我似乎无法正常工作。我已经有了一个好的开始,但是我感觉自己缺少一些东西。
我已经尝试将类似于Delete a row in Google Spreadsheets if value of cell in said row is 0 or blank中的格式的函数作为函数的基础,但是我似乎缺少了一些东西。我有一种感觉,这是由于它实际上没有读取数组,但是我无法弄清楚如何以读取数据的方式进行校正。
我看过其他github来源,例如https://gist.github.com/dDondero/285f8fd557c07e07af0e,但我被困住了。
function deleteRows()
{
var ss = SpreadsheetApp.getActiveSpreadsheet();
var RANGE = ss.getRange('B:B');
var v = RANGE.getValues();
var trainer = [""];
for(var i = v.length-1; i >= 0; i--)
{
if(v[0,i] = trainer)
{
ss.deleteRow(i + 1);
}
}
}
如果列表中的任何内容在第1列中会删除应该存在数据的行,该怎么办。截至目前,如果指定数组中有内容,则不会删除该行。不提供任何错误且运行正常,因为我在此脚本中有一个函数,一旦输入了某些内容,该函数当前会对行加时间戳。
答案 0 :(得分:0)
尝试一下:
您似乎正在尝试删除B列中没有任何值的行。这就是它的作用。
function deleteRows() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var rg=sh.getRange(1,2,sh.getLastRow(),1);
var v=r.getValues();
var d=0;
for(var 1=0;i<v.length;i++) {
if(!v[i][0]) {
ss.deleteRow(i+1-d++);
}
}
}
答案 1 :(得分:0)
感谢您的所有帮助。我能够深入了解它,并对提供给我的解决方案的信息进行了更改。它可能不是最干净的,但可以满足需要。我既得到了以前使用的时间戳,也得到了删除行功能。再次感谢您的帮助!
function onEdit(event)
{
var d = [""];
var timezone="GMT-5";
var timestamp_format="hh:mm:ss a"; // Timestamp Format.
var updateColName="Advisor";
var teamLeadColName = "Team Leader";
var timeStampColName="Time";
var sheet = event.source.getActiveSheet();
var actRng = event.source.getActiveRange();
var editColumn = actRng.getColumn();
var headers = sheet.getRange(2, 1, 1, sheet.getLastColumn()).getValues();
var teamLeadCol = headers[0].indexOf(teamLeadColName);
var timeCol = headers[0].indexOf(timeStampColName);
var updateCol = headers[0].indexOf(updateColName);
updateCol = updateCol+1;
for(var index = actRng.getLastRow(); index >= actRng.getRow(); index--)
{
if(teamLeadCol > -1 && index > 1)
{
var cell = sheet.getRange(index, teamLeadCol + 1);
var teamLeadName = cell.getValue();
for(var i=0; i < d.length; i++)
{
if(d[i] == teamLeadName)
{
sheet.deleteRow(index);
continue;
}
}
}
if (timeCol > -1 && index > 1 && editColumn == updateCol) // only timestamp if 'Last Updated' header exists, but not in the header row itself!
{
var cell = sheet.getRange(index, timeCol + 1);
var date = Utilities.formatDate(new Date(), timezone, timestamp_format);
cell.setValue(date);
var datestamp_format = "MMMM-dd-yyyy";
var dateStampColName = "Date";
var dateCol = headers[0].indexOf(dateStampColName);
if(dateCol > -1 && index > 1 && editColumn == updateCol)
{
var cell = sheet.getRange(index, dateCol +1);
var calendarDate = Utilities.formatDate(new Date(), timezone, datestamp_format);
cell.setValue(calendarDate);
}
}
}
}