【问题标题】:Run Google Apps Script from menu manually and not onOpen手动从菜单而不是 onOpen 运行 Google Apps 脚本
【发布时间】:2020-06-28 22:40:33
【问题描述】:

我最近更新了我的脚本以从自定义菜单而不是工作表中的按钮调用它,但我发现脚本在打开时立即运行“copyNew”功能,但我希望这样仅当我从自定义菜单中手动单击它时才运行,有人可以指导我调整此脚本以实现此目的吗?

“copyNew”功能将“结果”表中的所有内容复制到“新”表中 “clearCells”功能从“结果”表中清除某些列

这是脚本:

function onOpen() {

var ui = SpreadsheetApp.getUi()
  ui.createMenu("Payroll")
    .addItem("Create New Month", "CopyNew")
    .addItem("Reset Results", "ClearCells")
    .addToUi();
}

function CopyNew() {  
  var ss = SpreadsheetApp.getActive();
  var sheetName = ss.getSheetByName("Results");
    var createSheet = ss.getSheetByName("NEW");
    if(!newSheet){
      var createSheet = ss.insertSheet("NEW");
      var sourceRange = sheetName.getRange("A1:Q100");
      var targetRange = newSheet.getRange("A1:Q100");
      targetRange.setValues(sourceRange.getValues());
      sourceRange.copyTo(targetRange, {formatOnly:true});
    }
}

CopyNew();//remove this
function ClearCells() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('H7:H100').activate();
  spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
  spreadsheet.getRange('L7:L100').activate();
  spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
  spreadsheet.getRange('N7:N100').activate();
  spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
  spreadsheet.getRange('Q7:Q100').activate();
  spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
};

谢谢!

【问题讨论】:

  • 只需删除CopyNew(); 这将导致每次访问包括onOpen() 在内的任何函数时都会运行copyNew()。 onOpen() 没有错
  • 就是这样,非常感谢

标签: javascript google-apps-script google-sheets triggers


【解决方案1】:

就像这样:

function onOpen() {

var ui = SpreadsheetApp.getUi()
  ui.createMenu("Payroll")
    .addItem("Create New Month", "CopyNew")
    .addItem("Reset Results", "ClearCells")
    .addToUi();
}

function CopyNew() {  
  var ss = SpreadsheetApp.getActive();
  var sheetName = ss.getSheetByName("Results");
    var createSheet = ss.getSheetByName("NEW");
    if(!newSheet){
      var createSheet = ss.insertSheet("NEW");
      var sourceRange = sheetName.getRange("A1:Q100");
      var targetRange = newSheet.getRange("A1:Q100");
      targetRange.setValues(sourceRange.getValues());
      sourceRange.copyTo(targetRange, {formatOnly:true});
    }
}

function ClearCells() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('H7:H100').activate();
  spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
  spreadsheet.getRange('L7:L100').activate();
  spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
  spreadsheet.getRange('N7:N100').activate();
  spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
  spreadsheet.getRange('Q7:Q100').activate();
  spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-10
    • 2011-09-09
    相关资源
    最近更新 更多