简体   繁体   English

如何在多张工作表上运行 Google 脚本?

[英]How do I run Google script on multiple sheets?

I've seen this question return quite a few results here, but I'm having trouble getting it to work for my use case.我已经看到这个问题在这里返回了很多结果,但是我无法让它在我的用例中工作。 Basically, I have a simple script that I want to run on multiple sheets in my spreadsheet (not every sheet, just the ones I define).基本上,我有一个简单的脚本,我想在我的电子表格中的多张工作表上运行(不是每张工作表,只是我定义的工作表)。 I've tried defining the sheets and running a for loop, but it fails when calling the method getRange.我尝试定义工作表并运行for循环,但在调用方法 getRange 时失败。 Anyway, here's my original script that defines only one sheet, and this works as expected:无论如何,这是我的原始脚本,它只定义了一张纸,并且按预期工作:

 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 } ); }

This is an example of putting settings into an object and then looping through the object.这是将设置放入对象然后循环遍历对象的示例。

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 } );
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在一个Google表格电子表格中的多个列范围上运行隐藏/显示列脚本? - How can I run my hide/show columns script on multiple ranges of columns in one google sheets spreadsheet? 如何在电子表格文件中的所有工作表上运行 Google Apps 脚本? - How do I run a Google Apps script on all sheets in my spreadsheet file? 如何从表格中计算谷歌应用脚​​本中的持续时间? - How do I calculate duration in google apps script from sheets? 如何在谷歌表格中运行两个单独的函数 - How do I run two separate functions in google sheets 如何在所有工作表上运行脚本,谷歌表格 - How to run script on all worksheets, Google Sheets Google Apps Script - 如何将此代码应用于 Google 表格中的多个表格 - Google Apps Script - how to applies this code for multiple sheets in google sheets Google Script - 用于多张工作表的一个 Run-on-Edit 脚本 - Google Script - One Run-on-Edit script for multiple sheets 如何将 Google Apps 脚本应用于多个工作表 - How to apply Google Apps Script to multiple sheets 如何使用谷歌脚本从谷歌表中提取特定列到谷歌文档? - How do I extract specific columns from google sheets to google doc using Google Script? 如何通过 Google 表格中的 Google Apps 脚本找到多个 IP 地址的地理位置? - How can I find geolocation of MULTIPLE IP addresses via Google Apps Script in Google Sheets?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM