我有下面的代码可以帮助我删除右端的所有空列。但我在工作表之间也有空列,并且所有这些空列都带有标题。
我想删除带标题的空列,有人可以帮助我吗?
function removeEmptyColumns() {
var ss = SpreadsheetApp.getActive();
var allsheets = ss.getSheets();
for (var s in allsheets){
var sheet=allsheets[s]
var maxColumns = sheet.getMaxColumns();
var lastColumn = sheet.getLastColumn();
if (maxColumns-lastColumn != 1){
sheet.deleteColumns(lastColumn+2, maxColumns-lastColumn);
}
}
}
这是您要求的样品
function UntitledMacro() {
var spreadsheet = SpreadsheetApp.getActive();
Logger.log("1");
var allsheets = spreadsheet.getSheets();
//In this sample I just to check 1 sheet only
//so temporarily the for loop is commented, and column header is in row 1
//and will delete all header without data and all column without header
for (var sht in allsheets){
var sheet=spreadsheet.getSheetByName(allsheets[shtNo].getSheetName());
Logger.log("2");
var maxColumns = sheet.getMaxColumns();
var lastColumn = sheet.getLastColumn();
var lastrow = sheet.getLastRow();
if (maxColumns-lastColumn != 0){
if (maxColumns>lastColumn)
{
Logger.log("3");
sheet.deleteColumns(lastColumn+1, maxColumns-lastColumn);
}
for (a=0; a<lastColumn; a++)
{
var lstRange1 = sheet.getRange(1,lastColumn - a );
if (lstRange1.getValue()=='')
{
sheet.deleteColumns(lastColumn - a +1);
}
else
{
var lstRange2= sheet.getRange(lastrow, lastColumn - a );
if (lstRange2.getValue()=='')
{
var rsltRange=lstRange2.getNextDataCell(SpreadsheetApp.Direction.UP);
if (rsltRange.getRow()==1) sheet.deleteColumns(lastColumn - a +1,1);
}
}
}
}
}
};
Update:
function UntitledMacro3() {
var spreadsheet = SpreadsheetApp.getActive();
var allsheets = spreadsheet.getSheets();
for (var shtNo in allsheets){
var sheet=spreadsheet.getSheetByName(allsheets[shtNo].getSheetName());
var maxColumns = sheet.getMaxColumns();
var lastColumn = sheet.getLastColumn();
var lastrow = sheet.getLastRow();
if (maxColumns-lastColumn != 0){
if (maxColumns>lastColumn)
{
sheet.deleteColumns(lastColumn+1, maxColumns-lastColumn);
}
}
if (lastColumn>0)
{
for (a=0; a<lastColumn; a++)
{
var lstRange1 = sheet.getRange(1,lastColumn - a );
if (lstRange1.getValue()=='')
{
sheet.deleteColumns(lastColumn - a );
}
else
{
var lstRange2= sheet.getRange(lastrow, lastColumn - a );
if (lstRange2.getValue()=='')
{
var rsltRange=lstRange2.getNextDataCell(SpreadsheetApp.Direction.UP);
if (rsltRange.getRow()==1 && (lastColumn - a )<=maxColumns) sheet.deleteColumns(lastColumn - a ,1);
}
}
}
}
}
};
现在对于所有表。运行脚本,完成后请按Ctrl+Enter,显示日志,请告知日志内容
之前的图:
之后的图片:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)