Google apps script 如何根据某列中的日期和另一列中的选择将整行从一张图纸移动到另一张图纸
我已经成功地将整行移到了我的“归档”表中,但没有达到标题中提到的标准,我已经处理了大约两三周了。我希望能够归档一整行,该行已存在30天,且值为“Complete”。我一直在尝试成功地合并一个Google apps script 如何根据某列中的日期和另一列中的选择将整行从一张图纸移动到另一张图纸,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我已经成功地将整行移到了我的“归档”表中,但没有达到标题中提到的标准,我已经处理了大约两三周了。我希望能够归档一整行,该行已存在30天,且值为“Complete”。我一直在尝试成功地合并一个onOpen脚本,但如果有其他方法,任何建议都将不胜感激 下面是我正在使用的onEdit脚本,我以前成功使用过它(减去我想要设置的标准)。我以前用onOpen编辑过它,没有任何错误,但它就是不起作用 检查表是我将从中提取行的内容,“归档”表是我移动行的目的地,第15列显然是我发现我的值“完整”的地方。如有必要
onOpen
脚本,但如果有其他方法,任何建议都将不胜感激
下面是我正在使用的onEdit
脚本,我以前成功使用过它(减去我想要设置的标准)。我以前用onOpen编辑过它,没有任何错误,但它就是不起作用
检查表是我将从中提取行的内容,“归档”表是我移动行的目的地,第15列显然是我发现我的值“完整”的地方。如有必要,我可以让你查阅我的试卷
function onEdit(event) {
// assumes source data in sheet named Needed
// target sheet of move to named Acquired
// test column with yes/no is col 4 or D
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "Checklist" && r.getColumn() == 15 && r.getValue() == "Complete") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Archive");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
}
我已经创建了一个示例电子表格,其中包含所有应用程序脚本,以完成您的任务;复制一份就可以玩了。Sheet3上的电子表格中有一部分用于计算脚本需要归档的行数的索引,很抱歉,我对这一点比较陌生,因此可能其他人可以编辑我的脚本以包含它 我用于获取需要存档记录的索引的公式是:
=COUNTA(IFERROR)(过滤器(Sheet1!A:A,Sheet1!A:A来自电子表格>打开时
函数onOpen(){
var s1=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var s2=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet2');
var s3=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet3');
var sortRange=s1.getRange(1,1,s1.getMaxRows(),2);
sortRange.sort([{column:2,升序:true},//要排序的第一列
{列:1,升序:true}]);//要排序的第二列
var lastDateIndex=s3.getSheetValues(3,2,1,1);//要移动的行数
var range=s1.getRange(1,1,lastDateIndex,2)
startRow=range.getRowIndex(),
numRows=range.getNumRows(),
numCols=range.getNumColumns()
var values=range.getValues(),
lastRow=s2.getLastRow();
s2.getRange(lastRow+1,1,lastDateIndex,2).setValues(值);
s1.删除行(开始行、开始行);
var sortRange=s1.getRange(1,1,s1.getMaxRows(),2);
sortRange.sort([{列:1,升序:true}]);
}
我创建了一个示例电子表格,其中包含所有应用程序脚本以完成您的任务;只需制作一份副本即可使用。Sheet3上的电子表格有一部分用于计算脚本需要归档的行数索引,抱歉,我对此不太熟悉,也许其他人可以将我的脚本编辑到中包括在内
我用于获取需要存档记录的索引的公式是:
=COUNTA(IFERROR)(过滤器(Sheet1!A:A,Sheet1!A:A来自电子表格>打开时
函数onOpen(){
var s1=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var s2=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet2');
var s3=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet3');
var sortRange=s1.getRange(1,1,s1.getMaxRows(),2);
sortRange.sort([{column:2,升序:true},//要排序的第一列
{列:1,升序:true}]);//要排序的第二列
var lastDateIndex=s3.getSheetValues(3,2,1,1);//要移动的行数
var range=s1.getRange(1,1,lastDateIndex,2)
startRow=range.getRowIndex(),
numRows=range.getNumRows(),
numCols=range.getNumColumns()
var values=range.getValues(),
lastRow=s2.getLastRow();
s2.getRange(lastRow+1,1,lastDateIndex,2).setValues(值);
s1.删除行(开始行、开始行);
var sortRange=s1.getRange(1,1,s1.getMaxRows(),2);
sortRange.sort([{列:1,升序:true}]);
}
我会试一试,非常感谢您的详细回复,我不忙时会尽快回复您。我会试一试,非常感谢您的详细回复,我不忙时会尽快回复您。