在getRange方法中使用字符串变量

时间:2018-10-11 00:59:07

标签: google-apps-script google-sheets

我正在尝试调用以下内容:

var range5 = SpreadsheetApp.getActiveSheet().getRange(range1:range3);

其中range1 = "C590"(字符串值)和range3 = "O594" (字符串值)(先前在脚本中找到)

但是我得到了错误:

  

缺少),位于参数列表之后

range5行。是否可以通过两个字符串作为范围?

1 个答案:

答案 0 :(得分:0)

发问者对此代码行有疑问
var range5 = SpreadsheetApp.getActiveSheet().getRange(range1:range3);

这行代码本来可以工作:

var range5 = SpreadsheetApp.getActiveSheet().getRange(range1+":"+range3);

这里的主要内容是如何将变量添加/分配给命令,以及如何在变量之间添加分隔符。


getRange至少有四个变体,但最基本的是“ getRange('单元格/范围地址')”。如上所示,可以将变量和分隔符连接起来以创建有效范围。

但是还有 个其他选项。在这种情况下,最明显的是getRange(row, column, numRows, numColumns)。这需要整数参数,但是getRowgetColumn可用于分解每个字符串。

下面的代码是将范围作为字符串管理的示例。
每个字符串分别用于创建特定范围的参数。
步骤#1-getRange中使用了range1的字符串。这允许...
步骤#2和#3-获取范围的行和列整数。
步骤#4-对range3重复
步骤5-现在我们可以使用“ getRange(行,列,行,行,列)”获得range5。值是从步骤1到步骤4提供/计算的。

function so_52759685() {

    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheets()[0];
    var range1 = "C590";
    var rangeone = sheet.getRange(range1);
    var rangeonerow = rangeone.getRow();
    var rangeonecolumn = rangeone.getColumn();

    Logger.log("RANGE1: " + range1 + " - row = " + rangeonerow + ", and the column number = " + rangeonecolumn); // DEBUG


    var range3 = "O594";
    var rangethree = sheet.getRange(range3);
    var rangethreerow = rangethree.getRow();
    var rangethreecolumn = rangethree.getColumn();
    Logger.log("RANGE3: " + range3 + " - row = " + rangethreerow + ", and the column number is " + rangethreecolumn); //DEBUG

    var range5 = sheet.getRange(rangeonerow, rangeonecolumn, rangethreerow - rangeonerow + 1, rangethreecolumn - rangeonecolumn + 1)
    var range5Rows = range5.getNumRows();
    var range5Columns = range5.getNumColumns();
    Logger.log("RANGE5: " + range5.getA1Notation() + " - Number of rows = " + range5Rows + ", and number of columns" + range5Columns);

}

或者,可以使用命名范围
除以下内容外,适用相同的过程:
1-range1和range3是命名范围,分别分配给C590和O594。
2-我们使用GetNamedRange代替声明字符串文字。

function so_5275968502() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheets()[0];
    var rangeone = ss.getRangeByName("range1");
    Logger.log("range one is " + ss.getRangeByName("range1").getA1Notation()); //DEBUG
    var rangeonerow = rangeone.getRow();
    var rangeonecolumn = rangeone.getColumn();

    Logger.log("RANGE1: " + rangeone.getA1Notation() + " - row = " + rangeonerow + ", and the column number = " + rangeonecolumn); //DEBUG

    var rangethree = ss.getRangeByName("range3");
    Logger.log("range three is " + ss.getRangeByName("range3").getA1Notation()); //DEBUG
    var rangethreerow = rangethree.getRow();
    var rangethreecolumn = rangethree.getColumn();
    Logger.log("RANGE3: " + rangethree.getA1Notation() + " - row = " + rangethreerow + ", and the column number is " + rangethreecolumn); //DEBUG

    var range5 = sheet.getRange(rangeonerow, rangeonecolumn, rangethreerow - rangeonerow + 1, rangethreecolumn - rangeonecolumn + 1)
    var range5Rows = range5.getNumRows();
    var range5Columns = range5.getNumColumns();
    Logger.log("RANGE5: " + range5.getA1Notation() + " - Number of rows = " + range5Rows + ", and number of columns" + range5Columns); //DEBUG

}