0

我正在拼命地学习用这种语言“思考”(我的母语编码语言是 VBA/ASP)。

这是一个非常基本的示例,它只是读取 Sheet1 中特定单元格的内容,然后将该值分配给名为 rngVal 的变量

var ss = SpreadsheetApp.getActiveSpreadsheet();
ss.setActiveSheet(ss.getSheetByName("Sheet1"));
var rngVal = ss.setActiveSelection("A1").getValues(); 

当我试图解构这段非常简单的 3 行代码时(为了理解它的目的),我承认自己相当困惑。

原因如下:

当我在每一行之后插入一个 msgbox 时,我得到了这个:

var ss = SpreadsheetApp.getActiveSpreadsheet();=“电子表格

ss.setActiveSheet(ss.getSheetByName("Sheet1"));=“电子表格

var rngVal = ss.setActiveSelection("A1").getValues();=单元格值

什么是“电子表格”?这有什么帮助(?)以及如何使用它来导航工作表并在其中读取/写入值?那是两行代码做什么(?),有什么好处?

(我不是想好斗,我只是想理解,这样我就可以学会用这种语言“思考”)

其次:在第一行,我得到了什么?

在第二行中,我首先设置'ting,然后我得到'ting?(我对那条线实际上在做什么很困惑)

在第三(最后)行有更多的set 'ting 和get 'ting,虽然这次它没有嵌套。

这是非常基本的代码(功能上),但我很难掌握它的逻辑,即如何使用该逻辑“思考”。

有没有人愿意表现出一些耐心并通过描述这个简单代码的逐步逻辑来帮助我选择一个单元格,捕获它的值,然后将它分配给一个变量?请理解,当我“思考”如何完成这项非常简单的任务时,我可以用非常简洁的一行(在 VBA 中)来完成......

rngVal = Sheets("Sheet1").Range("A1").Value

...因此,我对所有“电子表格”的内容以及对 3 行填充setget的需求感到非常困惑。

任何人?请?

4

3 回答 3

1

嗯,不知何故,正确的答案(我的另一个)被否决了。再次进行 setactiveselection 毫无意义,无需更改所选单元格,它只会使您的代码变慢。

于 2013-04-13T14:43:38.300 回答
0

Google 使用 Javascript 类来表示这些不同的对象。我已将第 3 行分成两部分以帮助解释。请比较:

var ss = SpreadsheetApp.getActiveSpreadsheet();
ss.setActiveSheet(ss.getSheetByName("Sheet1"));
var rng = ss.setActiveSelection("A1");
var val = rng.getValues();

上面的每一行都返回一个不同的 Object 类。第一行返回一个Spreadsheet类的对象,第二行返回一个Sheet类的对象,第三行返回一个Range类的对象,最后一行返回一个Object类的对象。

在此处查看有关可以对/使用不同类别的对象执行的各种操作(方法)的文档。当我构建一个谷歌应用程序时,我住在那个网页上。

要将上面的代码与您从 VBA 理解的代码进行比较,这一行:

rngVal = Sheets("Sheet1").Range("A1").Value

可以用 Javascript 在一行中编写如下:

var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").setActiveSelection("A1").getValues(); 

希望有帮助。如果您有任何问题,请告诉我。

于 2013-04-11T21:04:38.793 回答
0

你们做的比需要的更复杂。无需乱选。getactivespreadsheet().getsheetbyname("x").getrange("a1").getValue() 也可以。

于 2013-04-11T22:06:26.823 回答