onEdit()停止了工作?

时间:2016-07-22 21:46:23

标签: google-apps-script google-sheets user-input

所以我有一张Google表格,当用户输入多个项目时,它会输出描述和价格。我实际上有50张(美国每个州一张)几乎完全相同,但价格略有不同,因为州税因国家而异。

我使用onEdit()让我的工作表正常工作,直到我改变了信息来源的来源。最初在我的工作表中,我有另一个包含所有项目信息的页面,这样一个简单的Vlookup可以完成大部分工作,除了计算项目的价格(这是我的代码所做的,使用的信息页面)表单计算价格)。

然而,当需要对某个项目进行编辑时,我想做到这一点,以便我们只需要更新一个" master"表格,并通过openByUrl(...)拨打电话而不是全部50张并复制粘贴信息。我尝试在一个工​​作表中实现它,现在它在编辑时不起作用,但是当我手动进入脚本编辑器并按下运行时它确实有效。是什么给了什么?

编辑:这是所要求的代码。

function onEdit(d) {
  itemPriceSetup();
}

// Runs the actual program.
function itemPriceSetup() {

  // Grabs and stores the sheet where a customer places an item number and where the code will output the price to.
  var orderSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Item Sale Doc");
  var orderSheetArray = orderSheet.getSheetValues(1, 1, 34, 8);

  // Grabs and stores the sheet that has the information on the item.
  //***var infoSheet = SpreadsheetApp.openByUrl('link to info');
 var infoSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sheet with info");
 var infoSheetArray = infoSheet.getSheetValues(1, 1, infoSheet.getLastRow(), 10);

所以带有三个星号的代码就是我想要使用的,但是导致我的程序不起作用 - 也就是说,onEdit()不会运行(我已将它注释掉,因此代码将运行 - 它下方的线是我试图替换的线。如果我使用未注释的行来完成调试器,它实际上可以正常工作。

2 个答案:

答案 0 :(得分:2)

所以我想出来了,但这有点奇怪。我没有意识到在资源下找到了脚本的触发器,所以我在我的脚本中直接写了一个(我猜?)。无论哪种方式,使用链接并转到“手动管理触发器”来阅读如何操作。 https://developers.google.com/apps-script/guides/triggers/installable

答案 1 :(得分:2)

我在onEdit(e)上遇到了同样的问题,无法正常工作。在尝试了许多不同的功能之后,禁用新的Apps Script V8引擎对我来说很有效。要禁用,请转到“脚本”菜单,选择“运行”,然后单击“禁用引擎”

Dissabling new Apps Script V8 engine

我希望这个答案对很多人有帮助。非常感谢我在StackOverflow上获得的所有帮助。谢谢