首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从A1notation获得范围号?

如何从A1notation获得范围号?
EN

Stack Overflow用户
提问于 2022-11-21 11:28:23
回答 1查看 35关注 0票数 0

这是一个从数字中获取a1notation的脚本。相反,我不知道如何从a1notation获得这个数字!

代码语言:javascript
复制
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var range = sheet.getRange(1, 1, 2, 5);

// Logs "A1:E2"
Logger.log(range.getA1Notation());

我想从"A1:E2“中得到(1,1,2,5)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-21 12:33:04

下面是如何从A1符号中获取行和列的示例。

代码语言:javascript
复制
function test() {
  try {
    let spread = SpreadsheetApp.getActiveSpreadsheet();
    let sheet = spread.getSheetByName("Sheet1");
    let range = "A1:E2";
    range = getRange(range);
    console.log(range);
    console.log( sheet.getRange(range[0][0],range[0][1],(range[1][0]-range[0][0]+1),(range[1][1]-range[0][1]+1)).getValues() );
    range = "F3";
    range = getRange(range);
    console.log(range);
    console.log( sheet.getRange(range[0][0],range[0][1]).getValue() );
  }
  catch(err) {
    throw "Error in test: "+err;
  }
}


function getRange(range) {
  try {
    let ranges = range.split(":");
    ranges = ranges.map( text => {
        let cell = text.toUpperCase();
        let column = 0;
        let row = 0;
        let char = null;
        for( let i=0; i<cell.length; i++ ) {
          char = cell.charCodeAt(i);
          if( ( char > 64 ) && ( char < 91 ) ) {
            if( row > 0 ) return null;
            column = (26*column)+char-64;
          }
          else if( ( char > 47 ) && ( char < 58 ) ) {
            if( column === 0 ) return null;
            row = (10*row)+char-48;
          }
        }
        if( ( column === 0 ) || ( row === 0 ) ) throw "Incorrect range";
        return [row,column];
      }
    );
    return ranges;
  }
  catch(err) {
    throw "\nError in getRange: "+err;
  }
};

8:47:47 AM  Notice  Execution started
8:47:49 AM  Info    [ [ 1, 1 ], [ 2, 5 ] ]
8:47:49 AM  Info    [ [ 'Goodbye World', 'Date/Time', 'a', 'b', 'c' ],
  [ 1,
    Mon Nov 07 2022 06:34:37 GMT-0800 (Pacific Standard Time),
    1,
    101,
    201 ] ]
8:47:49 AM  Info    [ [ 3, 6 ] ]
8:47:49 AM  Info    302
8:47:48 AM  Notice  Execution completed
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74518209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档