gpt4 book ai didi

javascript - onOpen 不适用于 Google 脚本

转载 作者:行者123 更新时间:2023-12-03 02:29:10 27 4
gpt4 key购买 nike

我试图让一段代码在电子表格打开时工作。我添加了 onOpen 脚本,将脚本触发器设置为“当电子表格打开时”,然后等待......什么也没有发生。我做错了什么?

该脚本基本上根据单元格的值将一行从一张纸复制到另一张纸上。我希望脚本仅在工作表

时将具有指定值的所有行复制到下一个工作表
function onOpen(){
moveThisRow();
}

function moveThisRow(){

var sheetNameToWatch = "Sheet1";

var columnNumberToWatch = 7; // column A = 1, B = 2, etc.
var valueToWatch = "move it";
var sheetNameToMoveTheRowTo = "Sheet2";

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getActiveCell();
var fill = sheet.getActiveRange-2;


if (sheet.getName() == sheetNameToWatch && range.getColumn() == columnNumberToWatch && range.getValue() == valueToWatch) {

var targetSheet = ss.getSheetByName(sheetNameToMoveTheRowTo);
var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).moveTo(targetRange);
sheet.deleteRow(range.getRow());
}
}

救命!

最佳答案

您的代码实际上运行正确。问题是 if 语句中的条件永远不会得到满足。我在您的代码中添加了一个 else 部分,并带有一个警报,以便更轻松地显示这一点。

function onOpen(){
moveThisRow();
}

function moveThisRow(){

var sheetNameToWatch = "Sheet1";

var columnNumberToWatch = 7; // column A = 1, B = 2, etc.
var valueToWatch = "move it";
var sheetNameToMoveTheRowTo = "Sheet2";

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getActiveCell();
// var fill = sheet.getActiveRange - 2;

if (sheet.getName() == sheetNameToWatch && range.getColumn() == columnNumberToWatch && range.getValue() == valueToWatch) {
var targetSheet = ss.getSheetByName(sheetNameToMoveTheRowTo);
var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).moveTo(targetRange);
sheet.deleteRow(range.getRow());
SpreadsheetApp.getUi().alert('Conditions are true')
} else {
SpreadsheetApp.getUi().alert('Conditions are false')
}
}

如果您更新 onOpen 函数以使用下面的代码创建一个菜单,您可以看到,当您指定的条件实际得到满足时,该代码将按照您的指示执行操作。

function onOpen(){
SpreadsheetApp.getUi().createMenu('Test')
.addItem('Run', 'moveThisRow')
.addToUi();
}

此外,正如上面指出的,您的 fill 变量是 NaN,但这不会导致问题,因为它实际上并未在任何地方的代码中使用(我只是将其注释掉)。希望这有帮助!

关于javascript - onOpen 不适用于 Google 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48808363/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com