Loops 在几列上循环
从谷歌表单开始 我成功创建了我需要的功能:Loops 在几列上循环,loops,google-sheets,range,google-sheets-api,Loops,Google Sheets,Range,Google Sheets Api,从谷歌表单开始 我成功创建了我需要的功能: function happy() { var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.getRange('C5').activate(); spreadsheet.getCurrentCell().setFormula('=G4'); spreadsheet.getRange('H4').activate(); var current_e15=spreadsheet
function happy() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('C5').activate();
spreadsheet.getCurrentCell().setFormula('=G4');
spreadsheet.getRange('H4').activate();
var current_e15=spreadsheet.getRange('E15').getValue();
spreadsheet.getCurrentCell().setValue(current_e15);
spreadsheet.getRange('C5').activate();
spreadsheet.getCurrentCell().setFormula('=G5');
spreadsheet.getRange('H5').activate();
var current_e15=spreadsheet.getRange('E15').getValue();
spreadsheet.getCurrentCell().setValue(current_e15);
...
...
...
函数从G[i]列读取,将其分配给C5,读取E15中新值产生的结果,并将该值放入单元格H[i]
显然,这可以通过i上的一个循环来完成,而不是复制经过这个相同的块并通过G5改变G4,通过H5改变H4等等
我只是不知道用这种语言怎么说
我试过这个显然不起作用
function happyloop() {
var spreadsheet = SpreadsheetApp.getActive();
var CellsG = spreadsheet.getRange('G4:G15');
var CellsH = spreadsheet.getRange('H4:H15');
for (var i = 0; i < CellsG.length; i++) {
spreadsheet.getRange('C5').activate();
spreadsheet.getCurrentCell().setFormula('=CellsG[i]');
spreadsheet.getRange(CellsH[i]).activate();
var current_e15=spreadsheet.getRange('E15').getValue();
spreadsheet.getCurrentCell().setValue(current_e15);
}
};
函数happyloop(){
var电子表格=SpreadsheetApp.getActive();
var CellsG=spreadsheet.getRange('G4:G15');
var CellsH=spreadsheet.getRange('H4:H15');
对于(变量i=0;i谢谢你的帮助:)我终于找到了有效的方法
function happyloop() {
var spreadsheet = SpreadsheetApp.getActive();
var CellsG = spreadsheet.getRange('G4:G15');
var CellsH = spreadsheet.getRange('H4:H15');
for (var i = 0; i < CellsG.length; i++) {
spreadsheet.getRange('C5').activate();
spreadsheet.getCurrentCell().setFormula('=CellsG[i]');
spreadsheet.getRange(CellsH[i]).activate();
var current_e15=spreadsheet.getRange('E15').getValue();
spreadsheet.getCurrentCell().setValue(current_e15);
}
};
如果有更优雅的方法,请纠正我。
多谢各位
function happyloop() {
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getSheets()[0];
for (var i = 4; i < 16; i++) {
sheet.getRange('C5').activate();
var current_Gi=sheet.getRange(i,7).getValue();
sheet.getCurrentCell().setValue(current_Gi);
sheet.getRange(i,8).activate();
var current_e15=sheet.getRange('E15').getValue();
sheet.getCurrentCell().setValue(current_e15);
}
}
函数happyloop(){
var电子表格=SpreadsheetApp.getActive();
var sheet=spreadsheet.getSheets()[0];
对于(变量i=4;i<16;i++){
sheet.getRange('C5').activate();
var current_Gi=sheet.getRange(i,7).getValue();
sheet.getCurrentCell().setValue(当前值);
sheet.getRange(i,8.activate();
var current_e15=sheet.getRange('e15').getValue();
sheet.getCurrentCell().setValue(当前值);
}
}
我接受了您的工作答案,并根据您的要求对其进行了细微更改,以实现更优雅的方式。原始脚本运行时间为4.5秒,而此修改版本运行时间为2.5秒。这是优化版本:
function happyLoop() {
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getSheets()[0];
var C5 = sheet.getRange('C5');
var E15 = sheet.getRange('E15').getValue();
for (var i = 4; i < 16; i++) {
C5.setValue(sheet.getRange(i, 7).getValue());
sheet.getRange(i, 8).setValue(E15);
}
}
函数happyLoop(){
var电子表格=SpreadsheetApp.getActive();
var sheet=spreadsheet.getSheets()[0];
var C5=表。getRange('C5');
var E15=sheet.getRange('E15').getValue();
对于(变量i=4;i<16;i++){
C5.setValue(sheet.getRange(i,7.getValue());
表.getRange(i,8).设置值(E15);
}
}
我更改了变量名以使其更清晰,但这并不能提高速度。为了获得更高的速度,我去掉了for
循环中所有不依赖于I
迭代器的内容。还要注意我是如何嵌套每个方法调用的
为了进一步改进这段代码,我必须理解您最初的场景。一个可能的改进是在完整的代码中只使用一次,因为它是最慢的方法,在这里它在每次迭代中都会被调用。最后,我想和大家分享一下。请不要犹豫,请向我寻求更深入的澄清。酷!非常感谢你。E15不能从循环中取出,因为它是每次我更新C5时更新的值,这是我要在每个H[I]中写入的E15的更新值序列。但是是的,C5确实可以去掉。谢谢同时感谢您的链接:)