javascript - 如何在多个工作表上运行 Google 脚本?

标签 javascript google-apps-script google-sheets

我已经看到这个问题在这里返回了相当多的结果,但我无法让它适用于我的用例。基本上,我有一个简单的脚本,我想在我的电子表格中的多个工作表上运行(不是每个工作表,只是我定义的工作表)。我试过定义工作表并运行 for 循环,但是在调用方法 getRange 时它失败了。无论如何,这是我的原始脚本,它只定义了一张纸,并且按预期工作:

var sheetToSort = "Sheet1";
var columnToSortBy = 1;
var rangeToSort = "A2:AB";

function onEdit() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var editedCell = sheet.getActiveCell();
  if (editedCell.getColumn() == columnToSortBy && sheet.getName() == sheetToSort) {
    sortFormResponsesSheet();
  }
}

function sortFormResponsesSheet() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetToSort);
  var range = sheet.getRange(rangeToSort);
  range.sort( { column : columnToSortBy, ascending: false } );
}

最佳答案

这是一个将设置放入对象然后循环遍历该对象的示例。

function onEdit() {
  const sheet = SpreadsheetApp.getActiveSheet(),
        editedCell = sheet.getActiveCell(),
        editedColumn = editedCell.getColumn(),
        sheetName = sheet.getName();

  // Define all the sheets to sort using an object literal
  const objSheetsToSort = {
    "Sheet1": {columnToSortBy: 1, rangeToSort: "A2:AB"},
    "Sheet2": {columnToSortBy: 2, rangeToSort: "A2:AB"},
    "Sheet3": {columnToSortBy: 3, rangeToSort: "A2:AB"},
    "Sheet4": {columnToSortBy: 4, rangeToSort: "A2:AB"}
  }

  // Get the sort info for this sheet (or `undefined` if we didn't define how to sort the edited sheet).
  var config = objSheetsToSort[sheetName];
  if (config && editedColumn === config.columnToSortBy) {
    // We want to sort the edited sheet.
    sortSheet_(sheet, config);
  }
}

// This function can only be called by other functions in this Script Project, not manually or via menu.
function sortSheet_(sheetToSort, objectOfSettings) {
  Logger.log('sheetToSort: ' + sheetToSort.getName())

  var range = sheetToSort.getRange(objectOfSettings.rangeToSort);
  range.sort( { column : objectOfSettings.columnToSortBy, ascending: false } );
}

关于javascript - 如何在多个工作表上运行 Google 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52626396/

相关文章:

javascript - 通过正则表达式进行文件验证 - Javascript

angularjs - Google Apps 脚本中的 Angular JS

javascript - Google应用程序脚本类型错误: Cannot read property "length" from undefined

google-sheets - 通过 pandas_gbq 将 bigquery 谷歌表联合数据源读取到云数据实验室的问题

javascript - 使用 Jquery 设置单选按钮值(多于一个单词/包含空格)

javascript - 如何从 jQuery 调用 PHP 函数?

python - 如何从 Python 脚本向 Google App Script API 传递参数?

excel - 如何在 Google 表格或 Excel 中制作标记数据列表

google-apps-script - 锁定特定日期的列范围(按月)

javascript - 带有欧芹 js 的唯一用户名