gpt4 book ai didi

javascript - 如何减少数组脚本中的函数?

转载 作者:行者123 更新时间:2023-11-27 23:01:45 24 4
gpt4 key购买 nike

*语法

我已经设法实现了我需要的功能,但它比我想要的更加手动 - 我必须运行几个不同的函数来实现完整的结果数组,而不是一个可以生成完整数组的函数。另外 - 如果我想让它成为一个通用脚本,我会只使用 getID("ENTER ID") 而不是 getActive() 吗?

有人可以帮我删减下面的脚本吗(大约有 20 页)?

function CopyDispatchWithHeaders (){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var source = ss.getSheets()[1];
var range = source.getRange("B3:AB400");

range.copyValuesToRange(0, 1, 27, 1, 500);
}

function CopyDispatchReport1() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet1 = ss.getSheets()[2];
var sheet2 = ss.getSheets()[0];

sheet1.getRange("B4:AB500").copyTo(sheet2.getRange(sheet2.getLastRow()+1,1,500,27), {contentsOnly:true});

}

function CopyDispatchReport2() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet1 = ss.getSheets()[3];
var sheet2 = ss.getSheets()[0];

sheet1.getRange("B4:AB500").copyTo(sheet2.getRange(sheet2.getLastRow()+1,1,500,27), {contentsOnly:true});
}

最佳答案

您可以用此替换所有 CopyDispatchReport1()CopyDispatchReport2() 等...函数:

var 
map = [{sheet1: 2, sheet2: 0},{sheet1: 3, sheet2: 0}],
i,
runner;

for (i in map) {

(function(obj) {

var
ss,
sheet1,
sheet2;

ss = SpreadsheetApp.getActiveSpreadsheet();
sheet1 = ss.getSheets()[obj.sheet1];
sheet2 = ss.getSheets()[obj.sheet1];

sheet1.getRange("B4:AB500").copyTo(sheet2.getRange(sheet2.getLastRow()+1,1,500,27), {contentsOnly:true});

})(map[i]);
}

首先,您需要创建一个 map (在本例中为对象数组),它将存储工作表所需的 ID。接下来,您可以迭代该映射并调用匿名函数,该函数将接收具有 sheet1sheet2 属性的对象。

您可以向此映射添加任何参数。例如:B4:AB500

让我们修改我们的 map :

map = [{sheet1: 2, sheet2: 0, range: 'B4:AB500'},{sheet1: 3, sheet2: 0, range: 'B6:AB500'}]

sheet1.getRange(obj.range).copyTo...

关于javascript - 如何减少数组脚本中的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37024604/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com