类型错误:无法读取属性“源"来自未定义 [英] TypeError: Cannot read property "source" from undefined

查看:31
本文介绍了类型错误:无法读取属性“源"来自未定义的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经在论坛中搜索了几次,但无法找到我的问题的答案.

I've searched through the forums a few times and I wasn't able to suss out an answer to my issue.

我正在使用 Google 表格为我的团队跟踪项目进度.我目前有 5 个用户,每个用户都有自己的选项卡,以及三个额外的选项卡,这些选项卡是动态的,但对除我以外的任何用户都相当不干涉.

I'm using Google Sheets to track project progress for my team. I currently have 5 users, each with their own tab, plus three additional tabs that are intended to be dynamic though fairly hands-off for any user except myself.

为了使这个跟踪器易于使用,我实现了一个 onEdit 脚本,以将任何标记为已完成"的项目从用户选项卡自动移动到已完成"选项卡.

In order to make this tracker easy to use, I've implemented an onEdit script to move any project that's marked "completed" from the user's tab over to the "completed" tab automatically.

我测试的前几次脚本运行良好,但现在我遇到了这个错误:

The script worked fine the first few times I tested it out, but now I'm encountering this error:

类型错误:无法从未定义中读取属性源".(第 7 行)

TypeError: Cannot read property "source" from undefined. (line 7)

我不完全确定为什么脚本无法找到源代码,所以我不确定我需要在我的代码中修复什么.

I'm not entirely sure why the script is unable to find the source, so I'm not sure what I need to fix in my code.

function onEdit(event) {
  // assumes source data in sheets named Laura, Jedsen, Erin, Tim, Hunter
  // target sheet of move to named Completed
  // test column with completed is col 11 or K
  // must create new script when adding in a new writer
  var ss = SpreadsheetApp.getActiveSheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();

  if(s.getName() == "Laura" && r.getColumn() == 11 && r.getValue() == "Completed") {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Completed");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  }
  if(s.getName() == "Jedsen" && r.getColumn() == 11 && r.getValue() == "Completed") {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Completed");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  }
   if(s.getName() == "Erin" && r.getColumn() == 11 && r.getValue() == "Completed") {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Completed");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  }
   if(s.getName() == "Hunter" && r.getColumn() == 11 && r.getValue() == "Completed") {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Completed");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  }
   if(s.getName() == "Tim" && r.getColumn() == 11 && r.getValue() == "Completed") {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Completed");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  }
}

推荐答案

看起来您正在从脚本编辑器运行该函数.在这种情况下,event 是未定义的.要了解如何测试触发器函数,请参阅如何测试GAS 中的触发函数?

Looks that you are running the function from the Script Editor. In this case, event is undefined. To learn about how to test a trigger function see How can I test a trigger function in GAS?

这篇关于类型错误:无法读取属性“源"来自未定义的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆