【问题标题】:Google Spreadsheet - how to add confirmation msg box before executing script谷歌电子表格 - 如何在执行脚本之前添加确认消息框
【发布时间】:2014-03-12 06:23:29
【问题描述】:

我想在脚本运行之前添加一个确认消息框。

这是脚本:

function moveTo(e) {
// moves a row from a sheet to another when a magic value is entered in a column
// adjust the following variables to fit your needs try {

var sheetNameToWatch = "Active Discs";
var columnNumberToWatch = 15; // column A = 1, B = 2, etc.
var valueToWatch = "Completed";
var sheetNameToMoveTheRowTo = "CompletedShipped Projects";


var ss = e.source;
var sheet = ss.getActiveSheet();
var range = e.range;

if (sheet.getName() == sheetNameToWatch && range.columnStart == columnNumberToWatch && e.value == 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());
}
} catch (error) { Logger.log(error)
}

消息框将包含以下消息设置: 消息应为“您确认将 Ocean Gil 移至已完成的已发货项目表吗?”

var app = UiApp.createApplication().setHeight(150).setWidth(250);
var msg = "Do you confirm to move " + "Active row cells A + B" + " to Completed Shipped   Projects Sheet?";
app.setTitle("Please Confirm this Action");
app.add(app.createVerticalPanel().add(app.createLabel(msg)));
var doc = SpreadsheetApp.getActive();
doc.show(app);
}

如果此人选择是,则“moveTo”脚本将执行。如果否,则脚本不执行任何操作并关闭提示窗口。

这是共享的 Google 电子表格。

https://docs.google.com/spreadsheet/ccc?key=0Ag8NytPhOo00dER6WG1PQ3g3V1hCbnVUaTJUZDFZenc&usp=sharing

任何有关代码的帮助将不胜感激。提前致谢。

【问题讨论】:

    标签: google-apps-script google-sheets messagebox


    【解决方案1】:

    在这种情况下使用 Browser 类可能会更简单和紧凑,请参阅doc here with example code

    编辑:在您的代码中,您可以像这样使用它:

    function moveTo(e) {
    // moves a row from a sheet to another when a magic value is entered in a column
    // adjust the following variables to fit your needs try {
    
    var sheetNameToWatch = "Active Discs";
    var columnNumberToWatch = 15; // column A = 1, B = 2, etc.
    var valueToWatch = "Completed";
    var sheetNameToMoveTheRowTo = "CompletedShipped Projects";
    
      try{
    var ss = e.source;
    var sheet = ss.getActiveSheet();
    var range = e.range;
    
    if (sheet.getName() == sheetNameToWatch && range.columnStart == columnNumberToWatch && e.value == valueToWatch) {
      var confirm = Browser.msgBox('Do you want to move data to the other sheet ?', Browser.Buttons.YES_NO); 
      if(confirm!='yes'){return};// if user click NO then exit the function, else move data
      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());
    }
      } catch (error) { Logger.log(error)}
    }
    

    【讨论】:

    • 嗨,谢尔盖,感谢您的建议。我不确定我是否正确实现了代码。我需要将 Browser 类放在代码中的什么位置。你能举个例子吗? Browser.msgBox('问候语', 'hello world', Browser.Buttons.YES_NO);
    • 非常感谢 x10。我对 if 语句的放置位置感到困惑。我很欣赏这个例子。
    猜你喜欢
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-27
    • 1970-01-01
    • 2014-07-18
    相关资源
    最近更新 更多