function OnInit(initData) { initData.name = 'RemoveEmptyColumns'; initData.version = '2025-05-08'; initData.url = 'https://resource.dopus.com/t/removeemptycolumns/43929'; initData.desc = 'Remove empty columns from the file display'; initData.default_enable = true; initData.min_version = '13'; } function OnAddCommands(addCmdData) { var cmd = addCmdData.AddCommand(); cmd.name = 'RemoveEmptyColumns'; cmd.label = 'Remove Empty Columns'; cmd.desc = 'Remove empty columns from the file display'; cmd.method = 'OnRemoveEmptyColumns'; cmd.template = '' + 'all/s,' + 'dryrun/s'; cmd.hide = false; cmd.icon = 'script'; } function OnRemoveEmptyColumns(scriptCmdData) { var cmd = scriptCmdData.func.command; var tab = scriptCmdData.func.sourcetab; var args = scriptCmdData.func.args; var fsu = DOpus.FSUtil(); var ssi = DOpus.Create().StringSetI(); var stt = DOpus.Create().StringTools(); var ver = DOpus.version.AtLeast('13.14.10'); cmd.deselect = false; var CRLF = '\r\n'; var fileDisplay = []; var itemsToEnum = args.all ? tab.all : tab.selected; if (itemsToEnum.count == 0) { DOpus.Output('No files to process'); return; } for (var e = new Enumerator(itemsToEnum); !e.atEnd(); e.moveNext()) { ssi.insert(e.item().realpath.pathpart); } for (var e = new Enumerator(ssi); !e.atEnd(); e.moveNext()) { var tmpFilePath = fsu.GetTempFilePath(); var cmdLine = 'Print' + ' FOLDER' + (args.all ? '' : '=selected') + ' AS=tab' + ' KEYWORDS' + ' ENCODING=utf8' + (ver ? ' WHENEXISTS=replace' : '') + ' QUIET' + ' TO="' + tmpFilePath + '"'; cmd.SetSource(e.item()); cmd.RunCommand(cmdLine); var tmp = stt.Decode(fsu.OpenFile(tmpFilePath).Read(), 'utf8').split(CRLF); for (var i = 0; i < tmp.length; i++) { if (i == 0 && fileDisplay.length > 0) continue; var line = tmp[i]; if (line.length == 0) continue; fileDisplay.push(line.split('\t')); } } if (fileDisplay.length == 0) { DOpus.Output('Could not print file display!?'); return; } var cmdLine = ''; for (var k = 0; k < fileDisplay[0].length; k++) { var len = 0; for (var j = 1; j < fileDisplay.length; j++) { len += fileDisplay[j][k].length; } if (len > 0) continue; // skip if not empty if (cmdLine) cmdLine += ','; cmdLine += fileDisplay[0][k]; // keyword } if (!cmdLine) { DOpus.Output('No empty columns found'); return; } cmdLine = 'Set COLUMNSREMOVE="' + cmdLine + '"'; if (args.dryrun) { DOpus.Output(cmdLine); } else { cmd.RunCommand(cmdLine); } }