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

问题描述 投票:0回答:2

我正在构建一个每日清单,该清单使用触发器在每晚 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()
}
google-apps-script google-sheets google-sheets-api
2个回答
2
投票

一种解决方案是获取源工作表的公式以及要清除的范围

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)

参考资料:


0
投票

sheet.getRange(rangeToClear).clear({contentsOnly: true});

© www.soinside.com 2019 - 2024. All rights reserved.