You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Sheets App Script 首列连续两空单元格时终止While循环的实现

Google Sheets App Script 循环条件修正方案

核心逻辑说明

你需要的循环终止条件为「工作表A列出现两个连续空单元格」,因此循环继续的条件为当前A列首个空行与其下一行未同时为空。此外你原有代码中的firstEmptyRow仅在函数初始化时获取一次,循环过程中不会自动更新,需要在每次循环末尾重新赋值。

修正后的完整代码

function doubleEntry() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  // 首次获取A列第一个空行
  var firstEmptyRow = sheet.setActiveSelection(sheet.getRange("A"+getFirstEmptyRowWholeRow()));

  // 循环条件:只要A列当前空行和下一行没有同时为空就继续执行
  while( !(sheet.getRange("A" + firstEmptyRow.getRow()).isBlank() && sheet.getRange("A" + (firstEmptyRow.getRow() + 1)).isBlank()) ) {
  
    //selectFirstEmptyRow
    firstEmptyRow.activate();

    //conditionalFill
    sheet.getCurrentCell().setFormulaR1C1('=R[-1]C[0]');
    sheet.getCurrentCell().offset(0, 1).activate();
    sheet.getCurrentCell().setFormulaR1C1('=R[-1]C[0]');
    
    sheet.getCurrentCell().offset(-1, 1).activate();
    sheet.getCurrentCell().setFormulaR1C1('=IFS(R[0]C[1]="Owner Withdrawal","Dividends",R[0]C[1]="Supplies","Expenses",R[0]C[1]="Services","Expenses",R[0]C[1]="Cash", "Assets", R[0]C[1]="Equipment", "Assets", R[0]C[1]="Accounts Payable", "Liabilities", R[0]C[1]="Owner Equity", "Equity", R[0]C[1]="Retained Earnings", "Equity", R[0]C[1]="Revenue","Revenue", R[0]C[1]="Accounts Receivable", "Revenue")');
  
    sheet.getCurrentCell().offset(1, 1).activate();
    sheet.getCurrentCell().setFormulaR1C1('=IF(R[-1]C[0]="Owner Withdrawal","Cash")');
    sheet.getCurrentCell().offset(0, -1).activate();
    sheet.getCurrentCell().setFormulaR1C1('=IF(R[0]C[1]="Cash","Assets")');
    
    sheet.getCurrentCell().offset(0, 2).activate();
    sheet.getCurrentCell().setFormulaR1C1('=R[-1]C[0]');
    sheet.getCurrentCell().offset(0, 1).activate();
    sheet.getCurrentCell().setFormulaR1C1('=R[-1]C[0]');
    sheet.getCurrentCell().offset(0, 1).activate();
    sheet.getCurrentCell().setFormulaR1C1('=R[-1]C[0]');
    sheet.getCurrentCell().offset(0, 1).activate();
    sheet.getCurrentCell().setFormulaR1C1('=R[-1]C[1]');
    sheet.getCurrentCell().offset(0, 1).activate();
    sheet.getCurrentCell().setFormulaR1C1('=R[-1]C[-1]');

    // 每次循环结束后重新获取最新的A列第一个空行
    firstEmptyRow = sheet.setActiveSelection(sheet.getRange("A"+getFirstEmptyRowWholeRow()));
  }
};

改动说明

  • 补全了while循环判断逻辑,当A列出现两个连续空单元格时自动终止循环
  • 新增了循环末尾的空行更新逻辑,避免每次循环都操作同一个固定行

内容的提问来源于stack exchange,提问作者Galen Farrel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 16:24:01