将工作表复制到新工作簿不允许onEdit Apps脚本正常运行

时间:2018-05-17 08:21:29

标签: google-apps-script google-sheets

我创建了一个Google电子表格模板,其中包含一个名为" CollegeTracker"的工作表。用户可以右键单击选项卡,然后"复制到"他们的工作簿。但是,我在Apps脚本中的onEdit功能无效。

function onEdit()
{
  var s = SpreadsheetApp.getActiveSheet();
  if( s.getName() == "CollegeTracker" ) 
  { //checks that we're on the correct sheet
    var r = s.getActiveCell();

    var range = s.getRange(r.getRow(),r.getColumn()); 
    var data = range.getValue();
    var schoolRange = s.getRange(r.getRow(),1);
    var schoolData = schoolRange.getValue();
    var deadlineRange = s.getRange(r.getRow(),3);
    var deadlineData = deadlineRange.getValue();

    Logger.log(r.getRow());
    Logger.log(r.getColumn());
    Logger.log(data);

这是我的代码的开头。我添加了几个记录器来查看发生了什么。我在单元格A2中输入了一些内容,但记录器显示了第1行第1列或A1。我尝试了几个其他单元格,但它总是返回A1作为活动单元格。我在单元格A6和E7中重复此操作,但记录器始终返回A1。但是,这在模板中正确读取。我想知道它是否是一个权限问题,我必须允许getActiveCell()工作。如果是这种情况,我该怎么做呢?我从我的模板中复制并粘贴代码并粘贴到脚本编辑器中,它工作正常。我当然可以制作我的剧本的多个副本,但如果我弄清楚这一点,我认为一个副本可以适用于多个工作表应该没问题。你知道阻止getActiveCell()工作的是什么吗?如果它是权限,我该如何解决这个问题呢?

更新: 我一直在继续我的测试并意识到getActiveSheet()仍然认为我的模板表是活动的,即使我正在处理新工作表。我想知道是否有办法确定我工作的工作表,无论我在哪个工作簿。

谢谢!

仪射线

0 个答案:

没有答案