Google apps script 如何在谷歌表单上只清除数据而不清除公式?
我正在建立一个每日清单,每天晚上12点用触发器创建一个新的标签。代码如下-但我需要代码来清除这些单元格的内容,而不是底层公式。我假设不是“var rangetoclear”,而是其他内容,但我在帮助页面上找不到 有人能帮忙吗 代码如下: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
/* 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)
参考文献: