Google apps script 插入新行并仅从下面的行复制数据验证

Google apps script 插入新行并仅从下面的行复制数据验证,google-apps-script,google-sheets,Google Apps Script,Google Sheets,创建一个“任务列表”电子表格,其中每次在第一个非标题行(第2行)中输入任务时,首先将其排序到已输入的其余任务中,然后在顶部(第2行)添加一个新行,用于下一个条目(只要最终结果相同,我就不遵循操作顺序) 如果需要,这里有一个电子表格链接: 我不熟悉GAS的编写,但我有点熟悉,可以把代码片段拼凑起来 我已经找到了以下几点,它们几乎让我达到了我想要的目的,但我要么得到了数据验证,要么得到了内容,要么两者都没有。我想要的只是空内容的数据验证 我发现这个问题被问到了,也被回答了,但也许这些解决方案已经过

创建一个“任务列表”电子表格,其中每次在第一个非标题行(第2行)中输入任务时,首先将其排序到已输入的其余任务中,然后在顶部(第2行)添加一个新行,用于下一个条目(只要最终结果相同,我就不遵循操作顺序)

如果需要,这里有一个电子表格链接:

我不熟悉GAS的编写,但我有点熟悉,可以把代码片段拼凑起来

我已经找到了以下几点,它们几乎让我达到了我想要的目的,但我要么得到了数据验证,要么得到了内容,要么两者都没有。我想要的只是空内容的数据验证

我发现这个问题被问到了,也被回答了,但也许这些解决方案已经过时了,因为它们不适合我。也许我只是做错了什么。这是我目前拥有的

谢谢你的帮助

特雷

函数onEdit(){
var sh=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var editedCell=sh.getActiveRange().getColumnIndex();
//编辑“任务”列后更新
如果(editedCell==6){
sh.getRange(“A2:F”).sort({column:2}).sort({column:3}).sort({column:1});
var firstRow=2;
var lCol=sh.getLastColumn();
var范围=sh.getRange(第一行,1,1,lCol);
var formulas=range.getFormulas();
sh.insertRowsAfter(1,1);
newRange=sh.getRange(第一行,1,1,lCol);
var ROWNOWER=第一行+1;
var maxCols=sh.getMaxColumns();
var rangeToCopy=sh.getRange(下面的行,1,1,maxCols);
copyTo(sh.getRange(第一行,1,1,maxCols),{validationOnly:true});
}
}

我想这可能更接近你想要的。但是,您没有对公式做任何操作,而且您的示例中也没有公式,因此很难确定您可能要实现的目标

function onEdit(e){
  var sh = e.range.getSheet();
  if(e.range.columnStart == 6) { 
    sh.getRange("A2:I").sort({column: 2}).sort({column: 3}).sort({column: 1});//I extended this range all the way to cover the headers.  That may not be what you want.
    var range = sh.getRange(2, 1, 1, sh.getLastColumn());
    var formulas = range.getFormulas();
    sh.insertRowsAfter(1, 1);
    newRange = sh.getRange(2, 1, 1, sh.getLastColumn());
    var maxCols = sh.getMaxColumns();
    var rangeToCopy = sh.getRange(3, 1, 1, maxCols);
    rangeToCopy.copyTo(sh.getRange(2, 1, 1, maxCols),SpreadsheetApp.CopyPasteType.PASTE_DATA_VALIDATION,false);    
  }
}
我没有e.range.columnStart的链接。我看到其他人在使用,只是做了一个
Logger.log(JSON.stringify(e))为自己查看它。我已经使用它很长时间了,所以它一定是那些未记录的功能之一

下面是它的样子:

{“authMode”:{},范围:{“columnStart”:6,“rowStart”:2,“rowEnd”:2,“columnstend”:6},“source”:{},“user”:{“昵称”:“jimesteban”,“email”:”email@email.com“}”,值“:“6”}


你的剧本到底有什么问题?请在您的电子表格中包含一个成功结果的示例。@Tedinoz,我只想复制一行的数据验证(我认为第三行比较理想。)OP中的脚本当前复制了包含内容的行。我希望它是空白的。谢谢公式部分只是其中一个片段的一部分,我没有费心删除它。但是是的,这正是我想要的。不管怎样,它都会创建一个新的空行,其中包含来自下面的数据验证。多谢各位@Cooper您能给我一份
columnStart
的文档参考吗。我已经找到了几个引用它的主题,但在谷歌文档中没有任何内容,或者我找错了地方;)@特雷:我在回答中添加了一条关于
e.range.columnStart
的评论。