Google apps script 如何在谷歌表单上只清除数据而不清除公式?

Google apps script 如何在谷歌表单上只清除数据而不清除公式?,google-apps-script,google-sheets,google-sheets-api,Google Apps Script,Google Sheets,Google Sheets Api,我正在建立一个每日清单,每天晚上12点用触发器创建一个新的标签。代码如下-但我需要代码来清除这些单元格的内容,而不是底层公式。我假设不是“var rangetoclear”,而是其他内容,但我在帮助页面上找不到 有人能帮忙吗 代码如下: /* DASHBOARD--------------------------------------------------------------------------------------------------- Edit this section

我正在建立一个每日清单,每天晚上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)
参考文献:


我找到了答案-我使用复选框作为公式的根-因此当复选框被选中时,一个时间戳和一些其他内容被填充。最初,我对结果行使用“clearContent()”,但我将其改为只清除复选框,它就起作用了。如果我的解决方案适合您的需要,也请检查它。@PatMac624用于文档编制,如果可以,请接受答案(✓) 这就解决了问题——它还可以帮助将来有同样问题的其他人找到解决方案:)