Javascript 移动到Google脚本运行而不执行
几周前我问了这个问题,得到了很好的回答。在此基础上,我修改了一个代码,它开始工作了!基本上,代码查看工作表上的一列,并根据某列中的值移动该工作表中的特定行。根据建议,脚本自下而上运行。以下是我的工作内容:Javascript 移动到Google脚本运行而不执行,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,几周前我问了这个问题,得到了很好的回答。在此基础上,我修改了一个代码,它开始工作了!基本上,代码查看工作表上的一列,并根据某列中的值移动该工作表中的特定行。根据建议,脚本自下而上运行。以下是我的工作内容: function move2Archive() { var columnNumberToWatch = 21; // column A = 1, B = 2, etc. var valueToWatch = "Yes"; //needs to have a Yes in the co
function move2Archive() {
var columnNumberToWatch = 21; // column A = 1, B = 2, etc.
var valueToWatch = "Yes"; //needs to have a Yes in the column for script to work
var sheetNameToMoveTheRowTo = "4.Archive";
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("3.Customer Tab");
var row = 1;
var range = sheet.getRange(row,columnNumberToWatch,sheet.getLastRow(),1).getValues(); //get Values of columnNumberToWatch
var range2 = sheet.getRange("B:B").getValues()
var len = range2.filter(String).length;
var targetSheet = ss.getSheetByName(sheetNameToMoveTheRowTo);
//Browser.inputBox(len) //used this to debug and check whether the len variable is correct
for (row=len; row> 0 ; row--){
if (range[row-1][0] == valueToWatch) { //if the value in the column is the value to watch; index [0] method used to get value of the column of interest
var targetRow = targetSheet.getRange("B:B").getValues().filter(String).length //ensure that it is being pasted on the last row (using Unique ID column)
var targetRange = targetSheet.getRange(targetRow + 1, 1); //add 1 spaces to cater for the header row at the top
//Browser.inputBox(row) //used to debug and check where the values will paste
sheet.getRange(row, 1, 1, sheet.getLastColumn()).moveTo(targetRange);
sheet.deleteRow(row);
}
}
}
当我运行脚本时,它会无休止地运行,不会将任何内容移动到下一列。但是,当我运行“调试行”(即Browser.inputBox
命令)时,它们表明脚本确实获得了正确的参数。例如,第二个浏览器.inputBox(行)
显示循环,并输出一个带有行号的inputBox,其中的值为“Yes”。问题是,它只是没有执行超过这一点,我不明白为什么!我第一次使用它的时候它就开始工作了,在一张有20行的纸上试过之后,它就停了一半……啊
还有,只是想走运,有没有办法加快脚本的速度?如果能知道是否有一种更有效的方法来执行相同的流程,那就太好了
谢谢 这可能与在尝试删除行之前未完成的
moveTo
有关。您是否尝试过刷新
sheet.getRange(row, 1, 1, sheet.getLastColumn()).moveTo(targetRange);
SlreadsheetApp.flush();
sheet.deleteRow(row)
嘿感谢您的建议,但线路仍然没有移动:(