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();=セル値

スプレッドシート」とは?これはどのように役立ちますか(?)、ワークシートをナビゲートしてその中の値を読み書きするためにどのように使用できますか? これは、何を (?) 実行する 2 行のコードで、何のメリットがあるのでしょうか?

(私は好戦的になろうとしているのではなく、この言語で「考える」ことを学べるように理解しようとしているだけです)

第二に、最初の行で、何を取得しますか?

2 行目では、最初に 'ting を設定し、次に'ting?を取得します。(その行が実際に何をしているのかについて私は非常に混乱しています)

3 行目 (最後) にはさらにset 'ting とget 'ting がありますが、今回はネストされていません。

これは (機能的には) 非常に基本的なコードですが、そのロジックを使用して「考える」方法に関して、そのロジックを把握するのに苦労しています。

セルを選択し、その値を取得し、それを変数に割り当てるというこの単純なコードの段階的なロジックを説明することで、忍耐を示して助けてくれる親切な人はいますか? その非常に単純なタスクを実行する方法を「考える」と、非常に簡潔な 1 行 (VBA) で実行できることを理解してください...

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

...したがって、「スプレッドシート」のすべてと、setgetで満たされた 3 行の必要性に本当に混乱しています。

誰?お願いします?

4

3 に答える 3

1

うーん、どういうわけか正しい答え(私の他の答え)が投票されました。setactiveselection を実行しても意味がありません。選択したセルを変更する必要はありません。コードが遅くなるだけです。

于 2013-04-13T14:43:38.300 に答える
0

Google は Javascript クラスを使用して、これらのさまざまなオブジェクトを表します。説明をわかりやすくするために、3 行目を 2 つの部分に分割しました。比較してください:

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

上記の各行は、オブジェクトの異なるクラスを返します。最初の行は Spreadsheet クラスのオブジェクトを返し、2 行目は Sheet クラスのオブジェクトを返し、3 行目は Range クラスのオブジェクトを返し、最後の行は Object クラスのオブジェクトを返します。

オブジェクトのさまざまなクラスに対して実行できるさまざまなアクション (メソッド) に関するドキュメントについては、こちらを参照してください。Google アプリを構築しているとき、私はそのウェブページに住んでいます。

上記を VBA から理解できるコードと比較するには、次の行を使用します。

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

次のように、Javascript で 1 行で記述できます。

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 に答える