我有这个代码解析输入表单的数据,因为它被放入链接的电子表格中。我还有一个部分在最后将一个单元格设置为表单提交上的特定值。但是,输入提交的行中的任何公式或条件格式都会被清除。例如,我对接收上述特定值的单元格进行了颜色编码。但是,当我查看工作表的条件格式部分时,值的范围向下移动1.即:原始I2:I50;提交后I3:I51
有一个公式我必须执行一些完全清除的计算。这是我的剧本:
function onSubmit(e) {
Logger.log("onSubmit() called with data:");
Logger.log(e);
var category = e.namedValues[ 'Location' ];
Logger.log("category from onSubmit is " + category);
Logger.log("range in sheet was:" + e.range.getA1Notation());
var rowNum = e.range.getRow();
Logger.log("row in range in sheet was " + rowNum);
var columnNum = 3;
Logger.log("last column in range in sheet was " + columnNum);
var pieces = category.toString().split(" > ");
Logger.log("split up category: ");
Logger.log(pieces);
var arrayLength = pieces.length;
for (var i = 0; i < arrayLength; i++) {
var targetColumnNum = columnNum + i;
Logger.log("target Column " + targetColumnNum );
Logger.log("setting row " + rowNum + " Column " + targetColumnNum + " to value " + pieces[i]);
SpreadsheetApp.getActiveSheet().getRange(rowNum, targetColumnNum).setValue(pieces[i]);
}
targetColumnNum = 9;
SpreadsheetApp.getActiveSheet().getRange(rowNum, targetColumnNum).setValue("(1)Open");
}
for循环如何操作会清除行中其他单元格的所有条件格式和公式?
答案 0 :(得分:0)
每次通过表单提交数据时,工作表中的新行插入(在最近的提交下),数据将放在该新行中。这就是您在该行中没有任何格式或公式的原因。
以下是一些解决此问题的方法:1-2是维护公式的替代方法,3-4格式化。
arrayformula
处理整个列的计算(假设您的公式的逻辑可以用这种方式表示)。setFormula
中的onSubmit
将公式插入到提交数据的每个新行中。 将条件格式从工作表的顶行复制到新行:例如,
var range = sheet.getRange("A1:Z1");
range.copyTo(newRow, {formatOnly: true});
脚本直接使用setBackground
根据提交的值格式化单元格。