Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 运行AppsScript时,Google工作表阻止更改公式目标_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 运行AppsScript时,Google工作表阻止更改公式目标

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(电子表格应用程

我有一个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(电子表格应用程序维度行);
范围。移动到(目标范围);
}
}
此外,在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"))
参考:

这确实阻止了这种行为。你知道有没有一种方法可以合并它,在向下拖动填充时也可以自动递增?