我正在尝试创建一个脚本,当用户单击警报消息中的“是”时,该脚本会将一系列数据从一张纸复制到另外两张单独的纸上。这两个之一将在使用模板创建的新电子表格上。我要复制的数据来自称为“数据”的工作表。目标工作表命名为“选定”,在新的电子表格中命名为“ csv”。新的电子表格将存储在其他文件夹中。发现此[脚本] [1]对我入门非常有帮助。
onEdit脚本适用于“数据”表,并且当用户单击警报消息中的复选框和“是”按钮时,会将所选行转移到“选定”表。
function onEdit(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "data" && r.getColumn() == 16 && r.getValue() == "Yes") {
var ui = SpreadsheetApp.getUi();
var response = ui.alert('Are you sure you want to continue?', ui.ButtonSet.YES_NO);
// Process the user's response.
if (response == ui.Button.YES) {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("selected");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
Logger.log('The user clicked "Yes."');
}
else if (response == ui.Button.NO) {
clearAnswer();
Logger.log('The user clicked "No" or the close button in the dialog\'s title bar.');
}
}
我遇到的第一个问题是,即使用户在脚本编辑器中触发了该功能,在用户单击警报消息中的“否”时,条件else if
也不会触发该功能“ clearAnswer”。
function clearAnswer() {
var app = SpreadsheetApp;
var clearSheet = app.getActiveSpreadsheet().getActiveSheet();
clearSheet.getRange("P2:P").clearContent();
}
第二个问题是,我不知道从何处开始,该脚本会将所选行从“数据”表复制到新电子表格上的“ csv”表上,该电子表格将使用模板创建。到目前为止,我已经找到了该脚本。
// Pull spreadsheet template
var ss = SpreadsheetApp.openById('TEMPLATEFILEID');
var newSS = ss.copy("Copy of " + ss.getName());
// Move to original folder
var targetFolder = DriveApp.getFileById('FOLDERFORNEWFILE');
var newSSFile = DriveApp.getFileById(newSS.getId());
originalFolder.addFile(newSSFile);
DriveApp.getRootFolder().removeFile(newSSFile);
}*/
如果您能为我提供任何帮助,我将不胜感激,或者希望您为我指明正确的方向,以便我更快地找到答案。
答案 0 :(得分:0)
您else if
嵌套在弹出事件之外。尝试这样:
function onEdit(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "data" && r.getColumn() == 16 && r.getValue() == "Yes") {
var ui = SpreadsheetApp.getUi();
var response = ui.alert('Are you sure you want to continue?', ui.ButtonSet.YES_NO);
// Process the user's response.
if (response == ui.Button.YES) {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("selected");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
Logger.log('The user clicked "Yes."');
} else if (response == ui.Button.NO) {
clearAnswer();
Logger.log('The user clicked "No" or the close button in the dialog\'s title bar.');
}
}
}
}