谷歌电子表格(应用脚本)复制一行信息到另一个电子表格(Google Spreadsheets (ap

2019-08-06 03:01发布

我需要,如果任何信息被输入到5列,数据的该行复制到其他电子表格。 如果第一个()在我的功能是别的东西,它的数据进行排序时,任何信息被输入到第4列,它的工作原理,但我需要其他的,如果()的工作,但它不会,我已经看过其他问题,但我无法找到答案,将在我的情况下工作。

function onEdit(event) {
  var sheet=event.source.getActiveSheet();
  var editedCell=sheet.getActiveCell();
  var columnToSortBy=4;
  var columnToArchive=5;
  var tableRange= "A2:F!";

  if(editedCell.getColumn() == columnToSortBy){
    var range=sheet.getRange(tableRange);
    range.sort( {column : columnToSortBy} );
  }
  else{
    if(editedCell.getColumn() == columnToArchive){
      var rowToBeMoved=editedCell.getRow();
      var rangeToBeMoved=sheet.getRange("A" + rowToBeMoved + ":F" + rowToBeMoved);
      var values=rangeToBeMoved.getValues();
      var archiveSpreadSheet=SpreadsheetApp.openById("0AroBvchobu2edHNXQ3ZUQjI5TWJtWWZwa1UtcExPNnc");
      var archiveSheet=archiveSpreadSheet.getSheetByName("archive");
      archiveSheet.appendRow(values);
    }
  }
}

我已经确定这个问题是与第二,如果块内的最后三行。 看来,行之后“VAR值= rangeToBeMoved.getValues();”,脚本将停止运行,因为如果我把Browser.msgBox(“HI”),该行之后或任何之前,会出现该消息,但如果我把它放在下一行后,它不会出现。 问题是与.openById()? 救命!

Answer 1:

这段代码的工作:

更新:2013年10月1日
您需要使用columnIndex和不getColumn:

function onEdit(event) {
  // set items for current spreadsheet
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getActiveSheet();
  var row = sh.getActiveRange().getRowIndex();
  var col = sh.getActiveRange().getColumnIndex();
  var columnToSortBy=4;
  var columnToArchive=5;
  var tableRange= "A2:F!";

  if(col == columnToSortBy){
    var range=sh.getRange(tableRange);
    range.sort( {column : columnToSortBy} );
  }

  if(col == columnToArchive){   
    var rangeToBeMoved=sh.getRange("A" + row + ":F" + row);
    var values=rangeToBeMoved.getValues();
    var archiveSpreadSheet=SpreadsheetApp.openById("your key");
    var archiveSheet=archiveSpreadSheet.getSheetByName("Sheet1");        
    archiveSheet.appendRow(values[0]);
  }
}    

所述appendRow只接受一维数组。 该getRange将导致的2D阵列。 增加了一个零(方括号中)将使它一维数组。



文章来源: Google Spreadsheets (app-script) copying a row of information to another spreadsheet