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