引用getLastRow()+ 1时获取服务器错误消息

时间:2015-11-19 20:25:04

标签: google-apps-script google-sheets

我有一张工作表使用了一些相同的代码...在最近几天试图处理我当前的项目,过去工作的东西不再有效,我收到各种各样的错误不同的东西。

目前,在我想出这个之前,我无法继续前进。

var ss = SpreadsheetApp.getActiveSpreadsheet();
var clientList = ss.getSheetByName("ClientList");
var tracker = ss.getSheetByName("Tracker");

var tr_activeRow = tracker.getActiveCell().getRow();
var tr_clientName = tracker.getRange(tr_activeRow,1);
var tr_birthDate = tracker.getRange(tr_activeRow,5);

function addNewName() {
  if(tr_clientName.getValue() == "New" && tr_birthDate.getValue() != ""){
    tracker.getRange(tr_activeRow, 2, 1, 4).copyValuesToRange(clientList, 1, 4, clientList.getLastRow()+1, 1);
  }
}

尝试运行代码时,我得到了:

  

很抱歉,发生了服务器错误。请稍等一下再试一次。

我已经尝试了一些事情并且知道getLastRow()+1这就是问题所在。我也试过了getLastRow()& getLastRow()-1查看代码是否运行且运行正常。当我使用正整数时,似乎只是一个问题......

我做错了什么?!?或者这是工作表/应用程序脚本的问题吗?

1 个答案:

答案 0 :(得分:0)

copyValuesToRange()的参数是:

  

copyValuesToRange(sheet,column,columnEnd,row,rowEnd)

您将行结束指定为第1行。

.copyValuesToRange(clientList, 1, 4, clientList.getLastRow()+1, 1);

rowEnd应该是一个大于或等于row参数(对于一行)的数字。

你只得到一排,

tracker.getRange(tr_activeRow, 2, 1, 4).copyVa . . . . 

所以rowrowEnd应该相同。

var theLastRow = clientList.getLastRow()+1;
tracker.getRange(tr_activeRow, 2, 1, 4)
  .copyValuesToRange(clientList, 1, 4, theLastRow, theLastRow);