谢谢你,并提前为我非常缺乏经验的问题感到抱歉。所以,我想制作一个代码,我知道我想要它做什么,我只是不知道如何编程。我需要的是:
功能GenPre()
1.-删除范围Presupuesto!A12:C42
2.-复制范围Imp!A2:Imp!C33 VALUES在Presupuesto!A12:Presupuesto!C42(Imp细胞是公式,我只想复制值)
3.-在Presupuesto中仅显示A列中使用过的行!A12:A42(考虑一些行已经隐藏,因此首先取消隐藏它们是一个想法)
4.-转到Presupuesto表(一旦我执行此功能,我想最终在表Presupuesto上
结束Generar
此功能将由同一电子表格中另一个工作表中的按钮运行。
到目前为止,我有这个:function GenPre() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetbyname(Presupuesto);
//next step is to select and delete the content of the range on the sheet
}
我知道我要求的很多,我找不到很多关于选择已定义单元格的内容......我真的不知道如何编程。
非常感谢!
修改
所以,我开始调整k4k4sh1的答案,并得到了这个(并阅读其他帖子隐藏在给定单元格中包含“x”的行):
function GenPre() {
var sheetp = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Presupuesto') //name a variable to the sheet where we're pasting information
var sheetc = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Imp') //name a variable to the sheet frome where we're copying information
sheetp.getRange('a12:c41').clearContent() //delete all values in the range where we're copying
sheetc.getRange('A2:C31').copyValuesToRange(sheetp,1,3,12,41); //copy from source range to destination range
sheetp.showRows(12,41); //make sure all rows in the destination range are shown
for( i=12 ; i<=41 ; i++) {
if (sheetp.getRange('A'+i).getValue() == '') { // status == ''
sheetp.hideRows(i);
}
}
}
Te脚本正在运行它应该如何,但现在,我希望它运行得更快(运行需要12秒,当它看起来不那么重),是否有一个功能将我的视图切换到sheetp?谢谢大家!
答案 0 :(得分:0)
你要我们做所有的工作:)
让我们从您的代码开始:
方法.getSheetByName(shName)
接受一个字符串作为参数,因此您应该将其更改为
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Presupuesto');
。
请注意,JavaScript区分大小写,因此.getSheetbyname
与.getSheetByName()
不同。
根据{{3}}使用sheet.getRange()
获取您的范围对象。请查看Sheet Class Reference:清除范围内容,包括使用.clear()
的格式,以清除格式完整的内容使用.clearContent()
。
要隐藏未使用的行,请尝试:
function hideRows(sheetName, column) {
var s = SpreadsheetApp.getActive().getSheetByName(sheetName);
s.showRows(1, s.getMaxRows());
s.getRange(column)
.getValues()
.forEach(function (r, i) {
if (r[0] == '') {s.hideRows(i + 1);}
});
}
// hideRows('Presupuesto', 'A12:A42');