我有一个电子表格,用户可以在其中使用注释更新“ J”列中的单元格,但是当他们更新该单元格时,我需要运行我的脚本。 然后,它将复制“ I”和“ J”列中的所有信息,并将它们粘贴到另一个单元格中,然后将Vlookup公式放回刚刚从中获取信息的“ J”中。
听起来似乎很复杂,但是由于我有各种各样的工作表从不同的工作簿中提取信息,因此我需要以这种方式进行。
但是,我尝试了许多解决方案,并且在更换单元格后无法使其运行。
我已经尝试过在变更触发器上安装一个可安装程序,但这在整个工作簿上都有效,并且通常最终会删除它应该复制的信息。
我在下面粘贴了我正在使用的代码,任何帮助将不胜感激。
function onChange(e)
{
var editRange = { // J:J
top : 2,
bottom : 2000,
left : 10,
right : 10
};
// Exit if we're out of range
var thisRow = e.range.getRow();
if (thisRow < editRange.top || thisRow > editRange.bottom) return;
var thisCol = e.range.getColumn();
if (thisCol < editRange.left || thisCol > editRange.right) return;
//Where Is The Data Stored That You Want To Copy
var ss = SpreadsheetApp.openById("1ZQLKnCHD9acTXCKpTeOnJshHEz43FDPdKZ-U6Me-k_k")
var West = ss.getSheetByName("West Orders")
var WestNotes = ss.getSheetByName("West Notes")
//Ranges of The Data You Want To Copy
var CopyWestNotes = West.getRange(2, 9,West.getLastRow(),2).getValues()
//Clear The Data Before Overiding
var ClearNotes = WestNotes.getRange(2,1,WestNotes.getLastRow(),2).clear()
//Ranges Of The Data You Want To Store
var PasteWestId = WestNotes.getRange(2,1,West.getLastRow(),2).setValues(CopyWestNotes);
//Put a formula in to update Notes;
var formula = '=IFerror(VLOOKUP(i2,\'West Notes\'!A:B,2,false)," ")'
var WestFormula = West.getRange(2,10,West.getLastRow(),1).setValue(formula)
}
答案 0 :(得分:2)
更改触发器不是简单的触发器。您必须自己安装它。 event object中也没有e.range。我想如果您检查过执行情况,就会看到一些错误。
我将您的代码修改为一个onEdit()简单触发器。但是,如果您执行任何需要权限的操作,则可能必须使其可安装。看起来像你。因此,现在您应该能够继续调试代码。
function onEdit(e) {
var editRange = {top:2,bottom:2000,left:10,right:10};
var thisRow=e.range.rowStart;
if (thisRow<editRange.top || thisRow>editRange.bottom)return;
var thisCol=e.range.columnStart;
if (thisCol<editRange.left || thisCol>editRange.right)return;
var ss = SpreadsheetApp.openById("id");
var West = ss.getSheetByName("West Orders");
var WestNotes = ss.getSheetByName("West Notes");
var CopyWestNotes = West.getRange(2, 9,West.getLastRow(),2).getValues();
var ClearNotes = WestNotes.getRange(2,1,WestNotes.getLastRow(),2).clear();
var PasteWestId = WestNotes.getRange(2,1,West.getLastRow(),2).setValues(CopyWestNotes);
var formula = '=IFerror(VLOOKUP(i2,\'West Notes\'!A:B,2,false)," ")';
var WestFormula = West.getRange(2,10,West.getLastRow(),1).setValue(formula);
}
我应该提到您需要在第7行中添加ID。
答案 1 :(得分:0)
只需对脚本的第7行进行简单更改就可以消除该问题,我使用了.getActiveSpreadsheet而不是使用.openById