如何仅清除数据而不清除Google表格上的公式?

问题描述

我正在建立一个每日清单,该清单每天晚上12点使用触发器触发一个新标签。代码在下面-但是我需要代码来清除那些单元格的内容,而不是基础公式。我认为不是“ var rangetoclear”,而是其他原因,但我在帮助页面上找不到。

有人可以帮忙吗?

代码如下:

/* DASHBOARD---------------------------------------------------------------------------------------------------
  Edit this section to change the dates tabs are created for and the range of data that will be cleared each time! */
  
  var numberOfDaysForwardForNextTab = 0
  var rangeToClear = 'F8:I1003'
  
  // -------------------------------------------------------------------------------------------------------------
  
  var ss = SpreadsheetApp.getActiveSpreadsheet();   // get the spreadsheet object
  SpreadsheetApp.setActiveSheet(ss.getSheets()[0]); // set the first sheet as active

  // Sets date for add tab & date for delete tab
  var MILLIS_PER_DAY = 1000 * 60 * 60 * 24;
  var today = new Date();
  var addWeek = Utilities.formatDate(new Date(today.getTime() + (numberOfDaysForwardForNextTab * MILLIS_PER_DAY)),"GMT+1","MM-dd-yy"); 
  
  // Adds tab
  ss.duplicateActiveSheet(); //Copies current sheet
  ss.renameActiveSheet(addWeek); //Renames sheet to date from above
  ss.moveActiveSheet(1); //Moves sheet to the first position

  // Prepares tab (clears old content)
  var sheet = ss.getSheetByName(addWeek);
  sheet.getRange(rangeToClear).clearContent()
}

解决方法

一种解决方案是获取源工作表的公式以及要清除的范围rangeToClear,然后在清除其内容后将公式复制到刚创建的重复工作表中:

  const rangeToClear = 'F8:I1003';
  const source_sheet = ss.getSheets()[0];
  const formulas = source_sheet.getRange(rangeToClear).getFormulas();
  const sheet = ss.getSheetByName(addWeek);
  sheet.getRange(rangeToClear).clearContent()
  sheet.getRange(rangeToClear).setFormulas(formulas)

参考:

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...