脚本在填充第8列的字段时自动添加新行

时间:2016-11-06 15:29:43

标签: google-apps-script google-sheets

我需要一个脚本,当我在第8行填写字段时,会在开头自动添加一个空行? 注意:这个新行保留了上一行的公式。

这是我正在使用的脚本。

它的工作原理是写出该行的任何部分(任何一列)

但我希望他只有在我在第8栏写一些内容时才会被激活。

function onEdit(e) {
    if (e) { 

      var ss = e.source.getActiveSheet();
        var r = e.source.getActiveRange(); 

        // If you want to be specific
        // do not work in first row
        // do not work in other sheets except "Outubro"
        if (r.getRow() != 1 && ss.getName() == "Outubro") {

            // E.g. status column is
            status = ss.getRange(r.getRow(), 8).getValue();

            // Status
          if (status == 'yes', 'null') {
                  var planilha = SpreadsheetApp.getActiveSpreadsheet();
                  var folha = planilha.getActiveSheet();
                    if (folha.getName() === "Outubro")
                    var ss = SpreadsheetApp.getActiveSpreadsheet();
                    var sheet = ss.getActiveSheet();
                    sheet.insertRowBefore(4);

                    var rangeToCopy = sheet.getRange(3, 1, 1, sheet.getMaxColumns());
                    rangeToCopy.copyTo(sheet.getRange(4, 1));
            }  
        }
    }
}

1 个答案:

答案 0 :(得分:0)

感谢社区的帮助。

代码正在运行。

我会将代码留给任何需要的人。

再次感谢大家的帮助。

function onEdit(e) {
    if (e) { 

    var ss, activeRange, activeColumn;

        var planilha = SpreadsheetApp.getActiveSpreadsheet();
        var folha = planilha.getActiveSheet();
        if (folha.getName() === "Outubro")

    ss = SpreadsheetApp.getActiveSpreadsheet();
    activeRange = ss.getActiveRange();
    activeColumn = activeRange.getColumn();
    //Logger.log('activeColumn: ' + activeColumn); //VIEW LOGS

    if (activeColumn !== 8) {return;};//Quit if not column 8 {

        var ss = SpreadsheetApp.getActiveSpreadsheet();
        var sheet = ss.getActiveSheet();
        sheet.insertRowBefore(4);

         var rangeToCopy = sheet.getRange(3, 1, 1, sheet.getMaxColumns());
         rangeToCopy.copyTo(sheet.getRange(4, 1));
  }  
}