0

OK、問題は、幅と高さに関するすべての情報なしで範囲を明示的に設定する方法がないことです。13 個のセルがある場合、なぜ 13 個のセルを書き込まないのでしょうか? したがって、ここにスクリプトがあります:

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var targetSheet = ss.getSheetByName("Analytics");
  var entries = [{
    name : "Read Data",
    functionName : "readRows"
  }];
  ss.addMenu("Script Center Menu", entries);
  var rows = targetSheet.getDataRange();
  var numRows = rows.getNumRows();
  var values = rows.getValues();
  targetSheet.getRange(1,1,values.length,values[0].length).setValues(values);
  values[1] = readRows();
  rows.setValues(values);
};

readRows()値の配列を返します。それはうまくいきましappendRow()たが、すべての複雑さなしにテーブルの2行目をオーバーライドする方法を見つけることができません. 私はすべてを試しました。このようにして、不適切な範囲の高さについて不平を言い続けます。他のいくつかの方法では、配列全体を行の各セルに書き込みました。私はこれがどのように機能するのか理解できません。それはまったく非論理的なようです。

setRow(2, readRows())つまり、配列内の値とまったく同じ数のセルを取り、その前に書き込まれたものがある場合はそれをオーバーライドするようなものを探しているということです。

4

1 に答える 1

0

わかりました、答えが見つかりました。これは次のようになります。

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var targetSheet = ss.getSheetByName("Analytics");
  var array = [];
  var data = [];
  var entries = [{
    name : "Read Data",
    functionName : "readRows"
  }];
  ss.addMenu("Script Center Menu", entries);
  array = readRows();
  data[0]=array;
  var range = targetSheet.getRange('A2:M2');
  range.setValues(data);
};

秘訣は、配列を別の配列に追加して、2 次元配列を実現することです。これは、単一の行を変更したい場合でも、setValues()および関数が機能する唯一の形式です。getValues()のような単純なオプションはないsetArray()ようです。

于 2013-05-19T20:19:54.417 に答える