web-dev-qa-db-ja.com

Googleスクリプトでの配列の定義

私はJavaScriptの初心者で、スプレッドシートからさまざまなことを引き出すスクリプトを書こうとしています。すぐに、スプレッドシートに入れる名前の配列を定義するのに苦労しています。エラーは「欠落しています;ステートメントの前(10行目)」

function readRows() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var rows = sheet.getDataRange();
  var numRows = rows.getNumRows();
  //var values = rows.getValues();

  var Names = sheet.getRange("A2:A7");
  var Name = new Array(6);
  var Name_cell = Names.getCell(1, 1);
  var Name[0] = Name_cell.getValue();  //  <-- Here's the issue
  var Name_cell = Names.getCell(2, 1);
  var Name[1] = Name_cell.getValue();
  var Name_cell = Names.getCell(3, 1);
  var Name[2] = Name_cell.getValue();
  var Name_cell = Names.getCell(4, 1);
  var Name[3] = Name_cell.getValue();
  var Name_cell = Names.getCell(5, 1);
  var Name[4] = Name_cell.getValue();
  var Name_cell = Names.getCell(6, 1);
  var Name[5] = Name_cell.getValue();

  // ...
}
6
derekantrican

これを試して

function readRows() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var rows = sheet.getDataRange();
  var numRows = rows.getNumRows();
  //var values = rows.getValues();

  var Names = sheet.getRange("A2:A7");
  var Name = [
    Names.getCell(1, 1).getValue(),
    Names.getCell(2, 1).getValue(),
    .....
    Names.getCell(5, 1).getValue()]

配列は、割り当ててから割り当てる代わりに、次のように簡単に定義できます。

var arr = [1,2,3,5]

あなたの最初のエラーは次の行が原因でした、そしてそれはそれが好きです

var Name[0] = Name_cell.getValue(); 

Nameはすでに定義されていて、その要素に値を割り当てているので、varをスキップする必要があります。

Name[0] = Name_cell.getValue();

プロのヒント:この問題のように、Googleサービスに直接関係しないほとんどの問題については、JavaScriptで一般的に行う方法として、グーグルを使う方がよいでしょう。

8
Karthik T

多分それはあなたがすでに宣言した変数を宣言しているからだと思います:

var Name = new Array(6);
//...
var Name[0] = Name_cell.getValue();  //  <-- Here's the issue: 'var'

これは次のようになるはずです:

var Name = new Array(6);
//...
Name[0] = Name_cell.getValue();

うまくいくか教えてください! ;)

2
mario

これは、私がそうであったように苦労している数人にとって役立つかもしれません:

var data = myform.getRange("A:AA").getValues().pop();
var myvariable1 = data[4];
var myvariable2 = data[7];
1
Terry