我有一个伪代码,但还不能编码

时间:2017-03-05 07:01:49

标签: google-apps-script google-sheets

谢谢你,并提前为我非常缺乏经验的问题感到抱歉。所以,我想制作一个代码,我知道我想要它做什么,我只是不知道如何编程。我需要的是:

功能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?谢谢大家!

1 个答案:

答案 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');