Google apps script 运行AppsScript时,Google工作表阻止更改公式目标
我有一个AppsScript附在谷歌表单上。该功能类似于基本数据输入—当我在A1中输入一个值(Google apps script 运行AppsScript时,Google工作表阻止更改公式目标,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有一个AppsScript附在谷歌表单上。该功能类似于基本数据输入—当我在A1中输入一个值(onEdit())时,会在A4处添加一个新单元格(列单元格向下移动),并将A1中的值移动到A4 随着新数据输入A1,列数据继续向下增长,内容从A4开始,最新的条目位于顶部 函数onEdit(e){ var范围=e范围; if(range.getRow()==1.0){ var targetRange=e.range.offset(3,0); targetRange.insertCells(电子表格应用程
onEdit()
)时,会在A4处添加一个新单元格(列单元格向下移动),并将A1中的值移动到A4
随着新数据输入A1,列数据继续向下增长,内容从A4开始,最新的条目位于顶部
函数onEdit(e){
var范围=e范围;
if(range.getRow()==1.0){
var targetRange=e.range.offset(3,0);
targetRange.insertCells(电子表格应用程序维度行);
范围。移动到(目标范围);
}
}
此外,在B列中,我有一个公式,该公式应报告a列中相邻字符串的长度。因此,B4处的单元格将使用以下公式报告A4处字符串的长度:
=LEN($A$4)
问题是,即使公式中有$
,每次运行AppsScript时(当我将数据输入A1时),公式都会移动。所以=LEN($4)
变成=LEN($5)
变成=LEN($6)
等等。。。当我继续输入数据时,没有新的单元格
我如何防止这种情况发生?
我有一个解决办法,也就是在AppsScript中创建公式,但我仍然想知道这种行为是否可以预防。解决方法:
函数onEdit(e){
var范围=e范围;
如果(range.getRow()==1.0&((range.getColumn()-1)%3==0)){
如果(range.getValue()!=“”){
var targetRange=e.range.offset(3,0);
var nextCol=targetRange.offset(0,1);
targetRange.insertCells(电子表格应用程序维度行);
nextCol.insertCells(电子表格应用程序维度行);
范围。移动到(目标范围);
nextCol.setFormulaR1C1(“=LEN(R[0]C[-1])”;
}
}
}
也许可以试试
=LEN(INDIRECT("A4"))
参考: