关于减少 Google Apps 脚本数据移动操作的运行时间的建议
Advice on reducing runtime for a Google Apps Script data move action
我想知道您能否帮助我减少我编写的一小部分代码的运行时间。感觉效率很低,但作为一个菜鸟,我真的不确定让它变得更好的最佳方法。任何建议表示赞赏!
前提是一个非常简单的on-call工具。有插槽 1 到 4。
用户可以将他们的开始时间、姓名和结束时间放入 4 个可用位置中的任何一个。
由于用户在不同的时间完成,这可能会导致它看起来有点乱 - 例如插槽 1 和 4 有数据,但插槽 2-3 是空的。
为了让它看起来更整洁一点,我编写了一些代码来检查单元格值是否为 "None"(我有另一个脚本将空白值更改为 "None" ,为了连续性),如果是这样,它会将其向下移动(类似传送带的系统)。
这在同一个函数中总共运行 4 次,以确保它捕获任何可能的已填充插槽组合。
出于某种原因,我在此处输入代码时遇到问题(它搞砸了格式),因此我提供了屏幕截图和代码的 pastebin:
代码截图1
代码截图2
Pastebin full copy of code with correct formatting
function onEdit(e) {
var s = SpreadsheetApp.getActiveSpreadsheet();
var User1Name = s.getRange("K4");
var User2Name = s.getRange("AK4");
var User3Name = s.getRange("BK4");
var User4Name = s.getRange("CK4");
var U1 = s.getRange('K4')
var U2 = s.getRange('AK4')
var U3 = s.getRange('BK4')
var U4 = s.getRange('CK4')
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
}
function conveyor() {
var s = SpreadsheetApp.getActiveSpreadsheet();
var User1Name = s.getRange("K4").getDisplayValue();
var User2Name = s.getRange("AK4").getDisplayValue();
var User3Name = s.getRange("BK4").getDisplayValue();
var User4Name = s.getRange("CK4").getDisplayValue();
var U1 = s.getRange('K4')
var U2 = s.getRange('AK4')
var U3 = s.getRange('BK4')
var U4 = s.getRange('CK4')
if (User3Name == 'None'){
FourtoThree();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
if (User2Name == 'None'){
ThreetoTwo();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
if (User1Name == 'None'){
TwotoOne();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
var User1Name = s.getRange("K4").getDisplayValue();
var User2Name = s.getRange("AK4").getDisplayValue();
var User3Name = s.getRange("BK4").getDisplayValue();
var User4Name = s.getRange("CK4").getDisplayValue();
var U1 = s.getRange('K4')
var U2 = s.getRange('AK4')
var U3 = s.getRange('BK4')
var U4 = s.getRange('CK4')
if (User3Name == 'None'){
FourtoThree();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
if (User2Name == 'None'){
ThreetoTwo();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
if (User1Name == 'None'){
TwotoOne();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
var User1Name = s.getRange("K4").getDisplayValue();
var User2Name = s.getRange("AK4").getDisplayValue();
var User3Name = s.getRange("BK4").getDisplayValue();
var User4Name = s.getRange("CK4").getDisplayValue();
var U1 = s.getRange('K4')
var U2 = s.getRange('AK4')
var U3 = s.getRange('BK4')
var U4 = s.getRange('CK4')
if (User3Name == 'None'){
FourtoThree();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
if (User2Name == 'None'){
ThreetoTwo();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
if (User1Name == 'None'){
TwotoOne();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
var User1Name = s.getRange("K4").getDisplayValue();
var User2Name = s.getRange("AK4").getDisplayValue();
var User3Name = s.getRange("BK4").getDisplayValue();
var User4Name = s.getRange("CK4").getDisplayValue();
var U1 = s.getRange('K4')
var U2 = s.getRange('AK4')
var U3 = s.getRange('BK4')
var U4 = s.getRange('CK4')
if (User3Name == 'None'){
FourtoThree();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
if (User2Name == 'None'){
ThreetoTwo();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
if (User1Name == 'None'){
TwotoOne();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
}
// ----------------------------------------------------------------------------------------------------------
// MOVE SCRIPTS //
function TwotoOne() {
var spreadsheet = SpreadsheetApp.getActive()
.getSheetByName('Sheet1');
spreadsheet.getRange('C4:I6').activate();
spreadsheet.getRange('AC4:AI6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('K4:Q6').activate();
spreadsheet.getRange('AK4:AQ6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('S4:Y6').activate();
spreadsheet.getRange('AS4:AY6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('AC4:AI6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('AK4:AQ6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('AS4:AY6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
};
function ThreetoTwo() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('AC4:AI6').activate();
spreadsheet.getRange('BC4:BI6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('AK4:AQ6').activate();
spreadsheet.getRange('BK4:BQ6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('AS4:AY6').activate();
spreadsheet.getRange('BS4:BY6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('BC4:BI6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('BK4:BQ6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('BS4:BY6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
};
function FourtoThree() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('BC4:BI6').activate();
spreadsheet.getRange('CC4:CI6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('BK4:BQ6').activate();
spreadsheet.getRange('CK4:CQ6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('BS4:BY6').activate();
spreadsheet.getRange('CS4:CY6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('CC4:CI6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('CK4:CQ6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('CS4:CY6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
};
RAW Paste Data
function onEdit(e) {
var s = SpreadsheetApp.getActiveSpreadsheet();
var User1Name = s.getRange("K4");
var User2Name = s.getRange("AK4");
var User3Name = s.getRange("BK4");
var User4Name = s.getRange("CK4");
var U1 = s.getRange('K4')
var U2 = s.getRange('AK4')
var U3 = s.getRange('BK4')
var U4 = s.getRange('CK4')
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
}
function conveyor() {
var s = SpreadsheetApp.getActiveSpreadsheet();
var User1Name = s.getRange("K4").getDisplayValue();
var User2Name = s.getRange("AK4").getDisplayValue();
var User3Name = s.getRange("BK4").getDisplayValue();
var User4Name = s.getRange("CK4").getDisplayValue();
var U1 = s.getRange('K4')
var U2 = s.getRange('AK4')
var U3 = s.getRange('BK4')
var U4 = s.getRange('CK4')
if (User3Name == 'None'){
FourtoThree();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
if (User2Name == 'None'){
ThreetoTwo();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
if (User1Name == 'None'){
TwotoOne();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
var User1Name = s.getRange("K4").getDisplayValue();
var User2Name = s.getRange("AK4").getDisplayValue();
var User3Name = s.getRange("BK4").getDisplayValue();
var User4Name = s.getRange("CK4").getDisplayValue();
var U1 = s.getRange('K4')
var U2 = s.getRange('AK4')
var U3 = s.getRange('BK4')
var U4 = s.getRange('CK4')
if (User3Name == 'None'){
FourtoThree();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
if (User2Name == 'None'){
ThreetoTwo();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
if (User1Name == 'None'){
TwotoOne();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
var User1Name = s.getRange("K4").getDisplayValue();
var User2Name = s.getRange("AK4").getDisplayValue();
var User3Name = s.getRange("BK4").getDisplayValue();
var User4Name = s.getRange("CK4").getDisplayValue();
var U1 = s.getRange('K4')
var U2 = s.getRange('AK4')
var U3 = s.getRange('BK4')
var U4 = s.getRange('CK4')
if (User3Name == 'None'){
FourtoThree();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
if (User2Name == 'None'){
ThreetoTwo();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
if (User1Name == 'None'){
TwotoOne();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
var User1Name = s.getRange("K4").getDisplayValue();
var User2Name = s.getRange("AK4").getDisplayValue();
var User3Name = s.getRange("BK4").getDisplayValue();
var User4Name = s.getRange("CK4").getDisplayValue();
var U1 = s.getRange('K4')
var U2 = s.getRange('AK4')
var U3 = s.getRange('BK4')
var U4 = s.getRange('CK4')
if (User3Name == 'None'){
FourtoThree();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
if (User2Name == 'None'){
ThreetoTwo();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
if (User1Name == 'None'){
TwotoOne();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
}
// ----------------------------------------------------------------------------------------------------------
// MOVE SCRIPTS //
function TwotoOne() {
var spreadsheet = SpreadsheetApp.getActive()
.getSheetByName('Sheet1');
spreadsheet.getRange('C4:I6').activate();
spreadsheet.getRange('AC4:AI6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('K4:Q6').activate();
spreadsheet.getRange('AK4:AQ6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('S4:Y6').activate();
spreadsheet.getRange('AS4:AY6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('AC4:AI6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('AK4:AQ6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('AS4:AY6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
};
function ThreetoTwo() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('AC4:AI6').activate();
spreadsheet.getRange('BC4:BI6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('AK4:AQ6').activate();
spreadsheet.getRange('BK4:BQ6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('AS4:AY6').activate();
spreadsheet.getRange('BS4:BY6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('BC4:BI6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('BK4:BQ6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('BS4:BY6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
};
function FourtoThree() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('BC4:BI6').activate();
spreadsheet.getRange('CC4:CI6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('BK4:BQ6').activate();
spreadsheet.getRange('CK4:CQ6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('BS4:BY6').activate();
spreadsheet.getRange('CS4:CY6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('CC4:CI6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('CK4:CQ6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('CS4:CY6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
};
传送带代码在function conveyor()
下,移动代码在function TwotoOne()
、function ThreetoTwo()
和function FourtoThree()
.
下
代码的问题(除了它是超级基本的,但这是作为菜鸟的乐趣)是 function conveyor()
的执行是运行时间大约为 15 秒。
对于减少运行时间,您有什么建议吗?
如果您想查看实际代码,或实际查看代码,请继续查看 Google Spreadsheet Doc。将任意信息组合放入每个槽位,点击 "RUN",它总是会将它们移回原位(因此 2 和 3 将变为 1 和 2、1 和 4 将变为 1 和 2、1、 3 和 4 将变成 1,2 和 3,等等)。
(这是我的电子表格的完整副本(非原件),没有机密信息,只有运行所需的基本代码。请根据需要随意修改或销毁它。有完整备份. 此外,一旦找到解决方案,我将恢复原始版本,以便未来的提问者能够看到初始代码)并查看我的问题。
再次感谢您的宝贵时间。如果您有任何其他问题,请告诉我,我会尽力解释!
/**
* Moves Filled Slots to occupy the left empty slots
* @OnlyCurrentDoc
*/
function conveyorBelt() {
var rangList = SpreadsheetApp.getActiveSheet().getRangeList(['K4','AK4','BK4','CK4']); // Four slot entries
var rngArr = rangList.getRanges(); //getEachSlotRange
for(var i=0;i<rngArr.length;i++) { //Loop over each Slot
if (rngArr[i].isBlank()) { //if current slot is empty,
for (var j= i+1;j<rngArr.length;j++) { //Loop over other slots to the right to find the next non empty slot
if (!rngArr[j].isBlank()) { //next non empty slot
var targetRange = rngArr[i].offset(0,-8,3,23);//Expand range to full slot(23Columns and 3rows)
var sourceRange = rngArr[j].offset(0,-8,3,23);//Expand range to full slot(23Columns and 3rows)
sourceRange.copyTo(targetRange,SpreadsheetApp.CopyPasteType.PASTE_NORMAL,false); //Paste Normal Ignoring Color Formatting
sourceRange.clearContent()
break;
}
}
}
}
}
我想知道您能否帮助我减少我编写的一小部分代码的运行时间。感觉效率很低,但作为一个菜鸟,我真的不确定让它变得更好的最佳方法。任何建议表示赞赏!
前提是一个非常简单的on-call工具。有插槽 1 到 4。
用户可以将他们的开始时间、姓名和结束时间放入 4 个可用位置中的任何一个。
由于用户在不同的时间完成,这可能会导致它看起来有点乱 - 例如插槽 1 和 4 有数据,但插槽 2-3 是空的。
为了让它看起来更整洁一点,我编写了一些代码来检查单元格值是否为 "None"(我有另一个脚本将空白值更改为 "None" ,为了连续性),如果是这样,它会将其向下移动(类似传送带的系统)。
这在同一个函数中总共运行 4 次,以确保它捕获任何可能的已填充插槽组合。
出于某种原因,我在此处输入代码时遇到问题(它搞砸了格式),因此我提供了屏幕截图和代码的 pastebin:
代码截图1
Pastebin full copy of code with correct formatting
function onEdit(e) {
var s = SpreadsheetApp.getActiveSpreadsheet();
var User1Name = s.getRange("K4");
var User2Name = s.getRange("AK4");
var User3Name = s.getRange("BK4");
var User4Name = s.getRange("CK4");
var U1 = s.getRange('K4')
var U2 = s.getRange('AK4')
var U3 = s.getRange('BK4')
var U4 = s.getRange('CK4')
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
}
function conveyor() {
var s = SpreadsheetApp.getActiveSpreadsheet();
var User1Name = s.getRange("K4").getDisplayValue();
var User2Name = s.getRange("AK4").getDisplayValue();
var User3Name = s.getRange("BK4").getDisplayValue();
var User4Name = s.getRange("CK4").getDisplayValue();
var U1 = s.getRange('K4')
var U2 = s.getRange('AK4')
var U3 = s.getRange('BK4')
var U4 = s.getRange('CK4')
if (User3Name == 'None'){
FourtoThree();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
if (User2Name == 'None'){
ThreetoTwo();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
if (User1Name == 'None'){
TwotoOne();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
var User1Name = s.getRange("K4").getDisplayValue();
var User2Name = s.getRange("AK4").getDisplayValue();
var User3Name = s.getRange("BK4").getDisplayValue();
var User4Name = s.getRange("CK4").getDisplayValue();
var U1 = s.getRange('K4')
var U2 = s.getRange('AK4')
var U3 = s.getRange('BK4')
var U4 = s.getRange('CK4')
if (User3Name == 'None'){
FourtoThree();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
if (User2Name == 'None'){
ThreetoTwo();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
if (User1Name == 'None'){
TwotoOne();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
var User1Name = s.getRange("K4").getDisplayValue();
var User2Name = s.getRange("AK4").getDisplayValue();
var User3Name = s.getRange("BK4").getDisplayValue();
var User4Name = s.getRange("CK4").getDisplayValue();
var U1 = s.getRange('K4')
var U2 = s.getRange('AK4')
var U3 = s.getRange('BK4')
var U4 = s.getRange('CK4')
if (User3Name == 'None'){
FourtoThree();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
if (User2Name == 'None'){
ThreetoTwo();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
if (User1Name == 'None'){
TwotoOne();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
var User1Name = s.getRange("K4").getDisplayValue();
var User2Name = s.getRange("AK4").getDisplayValue();
var User3Name = s.getRange("BK4").getDisplayValue();
var User4Name = s.getRange("CK4").getDisplayValue();
var U1 = s.getRange('K4')
var U2 = s.getRange('AK4')
var U3 = s.getRange('BK4')
var U4 = s.getRange('CK4')
if (User3Name == 'None'){
FourtoThree();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
if (User2Name == 'None'){
ThreetoTwo();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
if (User1Name == 'None'){
TwotoOne();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
}
// ----------------------------------------------------------------------------------------------------------
// MOVE SCRIPTS //
function TwotoOne() {
var spreadsheet = SpreadsheetApp.getActive()
.getSheetByName('Sheet1');
spreadsheet.getRange('C4:I6').activate();
spreadsheet.getRange('AC4:AI6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('K4:Q6').activate();
spreadsheet.getRange('AK4:AQ6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('S4:Y6').activate();
spreadsheet.getRange('AS4:AY6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('AC4:AI6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('AK4:AQ6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('AS4:AY6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
};
function ThreetoTwo() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('AC4:AI6').activate();
spreadsheet.getRange('BC4:BI6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('AK4:AQ6').activate();
spreadsheet.getRange('BK4:BQ6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('AS4:AY6').activate();
spreadsheet.getRange('BS4:BY6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('BC4:BI6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('BK4:BQ6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('BS4:BY6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
};
function FourtoThree() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('BC4:BI6').activate();
spreadsheet.getRange('CC4:CI6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('BK4:BQ6').activate();
spreadsheet.getRange('CK4:CQ6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('BS4:BY6').activate();
spreadsheet.getRange('CS4:CY6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('CC4:CI6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('CK4:CQ6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('CS4:CY6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
};
RAW Paste Data
function onEdit(e) {
var s = SpreadsheetApp.getActiveSpreadsheet();
var User1Name = s.getRange("K4");
var User2Name = s.getRange("AK4");
var User3Name = s.getRange("BK4");
var User4Name = s.getRange("CK4");
var U1 = s.getRange('K4')
var U2 = s.getRange('AK4')
var U3 = s.getRange('BK4')
var U4 = s.getRange('CK4')
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
}
function conveyor() {
var s = SpreadsheetApp.getActiveSpreadsheet();
var User1Name = s.getRange("K4").getDisplayValue();
var User2Name = s.getRange("AK4").getDisplayValue();
var User3Name = s.getRange("BK4").getDisplayValue();
var User4Name = s.getRange("CK4").getDisplayValue();
var U1 = s.getRange('K4')
var U2 = s.getRange('AK4')
var U3 = s.getRange('BK4')
var U4 = s.getRange('CK4')
if (User3Name == 'None'){
FourtoThree();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
if (User2Name == 'None'){
ThreetoTwo();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
if (User1Name == 'None'){
TwotoOne();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
var User1Name = s.getRange("K4").getDisplayValue();
var User2Name = s.getRange("AK4").getDisplayValue();
var User3Name = s.getRange("BK4").getDisplayValue();
var User4Name = s.getRange("CK4").getDisplayValue();
var U1 = s.getRange('K4')
var U2 = s.getRange('AK4')
var U3 = s.getRange('BK4')
var U4 = s.getRange('CK4')
if (User3Name == 'None'){
FourtoThree();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
if (User2Name == 'None'){
ThreetoTwo();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
if (User1Name == 'None'){
TwotoOne();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
var User1Name = s.getRange("K4").getDisplayValue();
var User2Name = s.getRange("AK4").getDisplayValue();
var User3Name = s.getRange("BK4").getDisplayValue();
var User4Name = s.getRange("CK4").getDisplayValue();
var U1 = s.getRange('K4')
var U2 = s.getRange('AK4')
var U3 = s.getRange('BK4')
var U4 = s.getRange('CK4')
if (User3Name == 'None'){
FourtoThree();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
if (User2Name == 'None'){
ThreetoTwo();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
if (User1Name == 'None'){
TwotoOne();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
var User1Name = s.getRange("K4").getDisplayValue();
var User2Name = s.getRange("AK4").getDisplayValue();
var User3Name = s.getRange("BK4").getDisplayValue();
var User4Name = s.getRange("CK4").getDisplayValue();
var U1 = s.getRange('K4')
var U2 = s.getRange('AK4')
var U3 = s.getRange('BK4')
var U4 = s.getRange('CK4')
if (User3Name == 'None'){
FourtoThree();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
if (User2Name == 'None'){
ThreetoTwo();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
if (User1Name == 'None'){
TwotoOne();
}
if (U1.isBlank()){
U1.setValue('None');}
if (U2.isBlank()){
U2.setValue('None');}
if (U3.isBlank()){
U3.setValue('None');}
if (U4.isBlank()){
U4.setValue('None');}
}
// ----------------------------------------------------------------------------------------------------------
// MOVE SCRIPTS //
function TwotoOne() {
var spreadsheet = SpreadsheetApp.getActive()
.getSheetByName('Sheet1');
spreadsheet.getRange('C4:I6').activate();
spreadsheet.getRange('AC4:AI6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('K4:Q6').activate();
spreadsheet.getRange('AK4:AQ6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('S4:Y6').activate();
spreadsheet.getRange('AS4:AY6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('AC4:AI6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('AK4:AQ6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('AS4:AY6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
};
function ThreetoTwo() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('AC4:AI6').activate();
spreadsheet.getRange('BC4:BI6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('AK4:AQ6').activate();
spreadsheet.getRange('BK4:BQ6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('AS4:AY6').activate();
spreadsheet.getRange('BS4:BY6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('BC4:BI6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('BK4:BQ6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('BS4:BY6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
};
function FourtoThree() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('BC4:BI6').activate();
spreadsheet.getRange('CC4:CI6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('BK4:BQ6').activate();
spreadsheet.getRange('CK4:CQ6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('BS4:BY6').activate();
spreadsheet.getRange('CS4:CY6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('CC4:CI6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('CK4:CQ6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('CS4:CY6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
};
传送带代码在function conveyor()
下,移动代码在function TwotoOne()
、function ThreetoTwo()
和function FourtoThree()
.
代码的问题(除了它是超级基本的,但这是作为菜鸟的乐趣)是 function conveyor()
的执行是运行时间大约为 15 秒。
对于减少运行时间,您有什么建议吗?
如果您想查看实际代码,或实际查看代码,请继续查看 Google Spreadsheet Doc。将任意信息组合放入每个槽位,点击 "RUN",它总是会将它们移回原位(因此 2 和 3 将变为 1 和 2、1 和 4 将变为 1 和 2、1、 3 和 4 将变成 1,2 和 3,等等)。
(这是我的电子表格的完整副本(非原件),没有机密信息,只有运行所需的基本代码。请根据需要随意修改或销毁它。有完整备份. 此外,一旦找到解决方案,我将恢复原始版本,以便未来的提问者能够看到初始代码)并查看我的问题。
再次感谢您的宝贵时间。如果您有任何其他问题,请告诉我,我会尽力解释!
/**
* Moves Filled Slots to occupy the left empty slots
* @OnlyCurrentDoc
*/
function conveyorBelt() {
var rangList = SpreadsheetApp.getActiveSheet().getRangeList(['K4','AK4','BK4','CK4']); // Four slot entries
var rngArr = rangList.getRanges(); //getEachSlotRange
for(var i=0;i<rngArr.length;i++) { //Loop over each Slot
if (rngArr[i].isBlank()) { //if current slot is empty,
for (var j= i+1;j<rngArr.length;j++) { //Loop over other slots to the right to find the next non empty slot
if (!rngArr[j].isBlank()) { //next non empty slot
var targetRange = rngArr[i].offset(0,-8,3,23);//Expand range to full slot(23Columns and 3rows)
var sourceRange = rngArr[j].offset(0,-8,3,23);//Expand range to full slot(23Columns and 3rows)
sourceRange.copyTo(targetRange,SpreadsheetApp.CopyPasteType.PASTE_NORMAL,false); //Paste Normal Ignoring Color Formatting
sourceRange.clearContent()
break;
}
}
}
}
}