繁体   English   中英

谷歌表脚本 - 选择多个a1表示法范围

[英]google sheets script - select multiple a1 notation range

我选择使用谷歌应用程序脚本批量更新行颜色。 但是我无法使用通常的范围功能,因为要着色的行不是连续的。 所以我认为,a1表示法会有所帮助,但不幸的是,看起来我只能通过一个a1表示法而不是多个表达式:

var a1Notations="A1:C1,A3:C3,A10,C10";
sheet.getRange(a1Notations).setBackground("red");

但我得到“未找到范围”错误。

任何想法我怎样才能使这项工作?

谢谢!

将范围符号放入数组中,然后循环遍历数组:

function setMultiRanges() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getActiveSheet();

  var a1Notations=["A1:C1","A3:C3","A10","C10"];

  var i=0,
      arryLngth = a1Notations.length;

  for (i=0;i<arryLngth;i+=1) {
    //Logger.log(a1Notations[i]);
    //Logger.log(typeof a1Notations[i]);

    sh.getRange(a1Notations[i]).setBackground("red");
  };
};

要多选多个范围并更改颜色:

var sheet = SpreadsheetApp.getActiveSheet();
var rangeList = sheet.getRangeList(['A1:C1','A3:C3','A10','C10']);
sheet.setActiveRangeList(rangeList).setBackground("red");

如果要在对话框中键入列表:

function promptRangesList() {
  var ui = SpreadsheetApp.getUi();
  var response = ui.prompt('Comma-separated ranges list', 'E.g.: A1:C1,A3:C3,A10,C10 or C3,C7,C17,C56', ui.ButtonSet.OK_CANCEL);
  Logger.log(response.getSelectedButton());
  // Process the user's response.
  if (response.getSelectedButton() == ui.Button.OK) {
    if (response.getResponseText()!=='') {
      var list = response.getResponseText().split(',');
      Logger.log(list);
      var rangeslist = SpreadsheetApp.getActiveSheet().getRangeList(list).setBackground("red");
      Logger.log(rangeslist);
      rangeslist.activate(); 
    } else {
      Logger.log('getResponseText empty');
    }    
  } else if (response.getSelectedButton() == ui.Button.CANCEL) {
    Logger.log('CANCELED');
  } else {
    Logger.log('The user clicked the close button in the dialog\'s title bar.');
  }  
}

参考:

Class RangeList - 选择Range实例列表

Class Sheet - 将指定的范围列表设置为活动工作表中的活动范围。

提示对话框 - 提示是一个预先构建的对话框,可在Google文档,表格或表单编辑器中打开。

独立设置每个范围

 sheet.getRange("A1:C1").setBackground("red");
 sheet.getRange("A3:C3").setBackground("red");
 sheet.getRange("A10:C10").setBackground("red");

根据Google表格的API V4的文档,选择多个范围的方法是传递一系列范围。

var ranges = ["'EVERYTHING'!A:A", "'EVERYTHING'!Z:Z"];

// I use Node.js, so my call to the API looks like this:
service.spreadsheets.values.batchGet({
    spreadsheetId: spreadsheetId,
    ranges: ranges
}, function(err, result) { ...

然后你得到的是一组数据,[{first range},{second range},{etc ...}]

暂无
暂无

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM