【问题标题】:How to combine multiple ranges in one variable?如何在一个变量中组合多个范围?
【发布时间】:2021-11-03 17:54:45
【问题描述】:

我有这个带有变量数组的 globalVariables 函数:

function globalVariables(){ 
 var varArray = {
   spreadsheetId   : 'MY_SPREADSHEET_ID',
   dataRange       : 'Air Database!A2:P', // Where I want to include another range
   idRange         : 'Air Database!B2:B',
   lastCol         : 'S',
   insertRange     : 'Air Database!A1:P1',
   sheetID         : 'MY_SHEET_ID_#'
 };
return varArray;
}

在上面的 dataRange 上,我想跳过 D 和 E 列。我希望它是这样的:

dataRange       : 'Air Database!A2:C,F2:P',

我已经尝试过上面写的内容,但它返回空白(甚至 A2:C 也没有出现)。我也尝试了下面列出的那些,它们都返回了相同的东西(空白)。 aws 是我的工作表

dataRange       : 'Air Database!A2:C' & 'Air Database!F2:P',
dataRange       : 'Air Database!A2:C&F2:P',
dataRange       : 'Air Database!A2:C && F2:P',
dataRange       : 'Air Database!A2:C','Air Database!F2:P',
dataRange       : ['Air Database!A2:C','Air Database!F2:P'],
dataRange       : aws.getRangeList(['A2:C', 'F2:P']),
dataRange       : [aws.getRange('A2:C'), aws.getRange('F2:P')],

更新:不需要回答这个问题,因为我已经解决了这个问题。如果您确实对遇到相同问题的其他人有提示,请随时回答。谢谢!

【问题讨论】:

标签: google-apps-script google-sheets web-applications global-variables var


【解决方案1】:

我的工作表0:

COL1 COL2 COL3 COL4 COL5 COL6 COL7 COL8 COL9 COL10
7 8 4 15 14 14 9 16 17 2
10 17 0 11 10 5 6 17 10 16
8 4 12 0 16 17 2 16 15 0
14 13 17 12 5 2 13 9 11 14
0 4 15 4 9 3 14 8 16 1
6 3 19 17 14 8 19 0 0 1
18 9 2 6 7 16 13 13 8 0
12 9 9 15 17 12 1 1 18 14
8 4 18 1 15 18 2 16 17 3
19 3 12 0 18 2 4 3 13 7
6 5 3 5 6 17 11 13 6 19
1 9 3 2 9 2 12 8 10 14
19 14 6 18 2 17 13 2 4 18
11 16 2 14 2 17 17 13 5 9
10 10 12 1 6 3 6 4 12 11
3 10 16 14 13 17 2 9 15 13
10 7 0 15 13 3 13 19 17 10
18 8 14 9 9 8 12 18 12 8
15 17 7 17 4 3 18 1 7 6
11 3 3 12 0 19 4 7 1 0

范围列表代码:

function myfunc() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName('Sheet0');
  const rgl = sh.getRangeList(['Sheet0!A2:C', 'E1:J']);
  rgl.getRanges().forEach(r => {
    let arr = r.getValues().filter(r => r[0]);
    Logger.log('Range: ' + r.getA1Notation())
    Logger.log(JSON.stringify(arr));
  });
}

Execution log
11:27:09 AM Notice  Execution started
11:27:10 AM Info    Range: A2:C
11:27:10 AM Info    [[7,8,4],[10,17,0],[8,4,12],[14,13,17],[6,3,19],[18,9,2],[12,9,9],[8,4,18],[19,3,12],[6,5,3],[1,9,3],[19,14,6],[11,16,2],[10,10,12],[3,10,16],[10,7,0],[18,8,14],[15,17,7],[11,3,3]]
11:27:11 AM Info    Range: E1:J
11:27:11 AM Info    [["COL5","COL6","COL7","COL8","COL9","COL10"],[14,14,9,16,17,2],[10,5,6,17,10,16],[16,17,2,16,15,0],[5,2,13,9,11,14],[9,3,14,8,16,1],[14,8,19,0,0,1],[7,16,13,13,8,0],[17,12,1,1,18,14],[15,18,2,16,17,3],[18,2,4,3,13,7],[6,17,11,13,6,19],[9,2,12,8,10,14],[2,17,13,2,4,18],[2,17,17,13,5,9],[6,3,6,4,12,11],[13,17,2,9,15,13],[13,3,13,19,17,10],[9,8,12,18,12,8],[4,3,18,1,7,6]]
11:27:11 AM Notice  Execution completed

【讨论】:

  • 感谢您所做的一切!虽然我试过了,但它仍然不适用于全局变量函数。如果我要更改 Web 应用程序的整个代码,这将非常有用。不过感谢您的帮助!
  • 是的,我建议您不要使用全局变量。只要习惯做一些额外的输入,这没什么大不了的,因为除非你知道如何进行延迟加载,否则每次函数调用都会重置全局变量。大师对此有解释。我有一个用于全局变量的全局对象,它从电子表格哈希表和属性服务中获取输入。我没有兴趣解释它。
  • 上面的代码只是一个使用rangeLists的例子
  • 啊,明白了!是的,全局变量有点搞砸了我已经知道的东西。不用担心,我只会搜索您提到的内容。再次感谢您!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-26
  • 1970-01-01
  • 2020-09-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多