如何在无数据时停止Google Apps Script表格处理脚本运行?
解决无数据时表格格式化脚本的异常问题
你的问题核心是当原始表格仅存表头、无有效数据时,脚本仍会执行后续格式化操作,导致空行被错误处理,进而影响自动邮件的输出格式。只需添加数据存在性判断逻辑,就能避免这种混乱。
修改后的代码
function process_table(){ var sss = SpreadsheetApp.openById("Spreadsheet URL"); var ws = sss.getSheetByName("Absenteeism Tab"); var mws = sss.getSheetByName("Export"); // 清空Export表(保留原有逻辑) mws.getRange('A:I').clear(); var lastRow = ws.getLastRow(); // 关键判断:只有表头时直接退出,不执行后续格式化 if (lastRow <= 1) { return; } // 以下格式化逻辑仅在有数据时执行 ws.getRange('A1:H'+lastRow).copyTo(mws.getRange(1,1), SpreadsheetApp.CopyPasteType.PASTE_VALUES,false); ws.getRange('A1:H'+lastRow).copyTo(mws.getRange(1,1), SpreadsheetApp.CopyPasteType.PASTE_FORMAT,false); var slr = mws.getLastRow(); mws.getRange('I2:I'+slr).setFormula('=text(e2, "yyyy-mm-dd")'); var copyIt = mws.getRange('I2:I'+slr).getValues(); mws.getRange('E2:E'+slr).setValues(copyIt); mws.getRange('J2:J'+slr).setFormula('=text(f2, "HH:MM")'); var copyIt = mws.getRange('J2:J'+slr).getValues(); mws.getRange('F2:F'+slr).setValues(copyIt); mws.getRange('K2:K'+slr).setFormula('=text(G2, "HH:MM")'); var copyIt = mws.getRange('K2:K'+slr).getValues(); mws.getRange('G2:G'+slr).setValues(copyIt); mws.getRange('I2:L').clear(); mws.getRange('E2:G').setNumberFormat('@'); mws.getRange('A:H').setHorizontalAlignment('center'); }
关键说明
if (lastRow <= 1):由于你的原始表格第1行是表头,当lastRow等于1时说明无有效数据行,此时直接退出函数,跳过所有格式化操作。- 保留
mws.getRange('A:I').clear():确保无数据时Export表处于清空状态,避免残留旧数据干扰邮件输出。 - 移除无用的
copyIt.toString():这行代码不会改变数组内容,对逻辑无实际帮助,因此删除。
内容的提问来源于stack exchange,提问作者Argos Nadir
相关产品推荐
相关产品推荐

