0

任何人都可以建议阅读什么或在哪里阅读,或者可以告诉我;使用 A1 或 R1C1 表示法,为什么需要 getRange?

4

1 回答 1

1

回答:

由于 Mind-Reading API 似乎并不公开,目前有必要告诉 Apps Script 您希望应用更改或获取值的范围。

更多信息:

从您的问题和评论中,我认为您误解了 Apps 脚本的工作原理。

要回答您的问题“使用 A1 或 R1C1 表示法,为什么需要 getRange”

你看,计算机并不聪明。他们完全按照你告诉他们的去做,并且需要非常具体的指示,这样他们才有意义。

当您在电子表格上的 Apps 脚本中运行脚本时,getRange是使用 A1 或 R1C1 表示法告诉脚本将代码应用到何处的方式。

工作示例:

假设在 中Sheet1,第一行是标题列表:

在此处输入图像描述

并且您希望标题以粗体显示,而其下方的数据也不会加粗

您必须在脚本中准确指定要更改字体样式的单元格范围 - 这是通过指定范围来完成的getRange()

function exampleFunction() {
  
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var sheet = ss.getSheetByName("Sheet1")
  var headingRange = sheet.getRange("A1:D1")
  
  headingRange.setFontWeight("bold")  
}

这会使指定范围内的单元格加粗为粗体。如果不告诉 Apps Script 将更改应用到哪个范围,它就不会知道您想在哪里执行此操作。

的替代签名getRange()

然而值得注意的是,SheetApps Script 类有多种指定范围的方法。第一种,最直观的方法是使用我们在上面示例中使用的 A1 表示法:

注意:在这些示例中,我使用activate()Apps 脚本中的方法来可视化每个范围的外观。

getRange(a1Notation)

返回以 A1 表示法或 R1C1 表示法指定的范围。

// Get a range A1:D4 on sheet titled "Sheet1"
var ss = SpreadsheetApp.getActiveSpreadsheet();
var range = ss.getRange("Sheet1!A2:D4");

// Get cell A3 on the first sheet
var sheet = ss.getSheets()[0];
var cell = sheet.getRange("A3");

视觉样本getRange(a1Notation)

在此处输入图像描述

在此处输入图像描述


获取范围的第二种方法是使用其行和列索引指定一个特定的单元格:

getRange(row, column)

返回给定坐标处左上角单元格的范围。

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
// Passing only two arguments returns a "range" with a single cell.
var range = sheet.getRange(2, 3);

视觉样本getRange(row, column)

在此处输入图像描述


第三种方式与第二种类似,但您也可以指定行数作为第三个参数:

getRange(row, column, numRows)

返回给定坐标处左上角单元格和给定行数的范围。

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
// When the "numRows" argument is used, only a single column of data is returned.
var range = sheet.getRange(2, 1, 3);

视觉样本getRange(row, column, numRows)

在此处输入图像描述


最后在第四种方式中,您可以在起始行和列的顶部指定行数和列数:

getRange(row, column, numRows, numColumns)

返回具有给定行数和列数的给定坐标处左上角单元格的范围。

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var range = sheet.getRange(1, 1, 3, 3);

视觉样本getRange(row, column, numRows, numColumns)

在此处输入图像描述

参考:

于 2020-12-22T09:05:15.590 回答