5

Google Apps スクリプトを使用してカスタム スプレッドシートを作成しています。スクリプトのレンダリング速度を改善するために、最初に出力値の配列を作成し、次にそれを使用setValues()してスプレッドシートを一度に作成します。

数式をスプレッドシートに追加しようとすると、setFormulas()すべての値も上書きされます。setValues()そのため、式をsetFormulas()上書きして値を上書きするケースがあります。

出力配列の特定の要素にマスキング値を指定して、それらの要素がスプレッドシートに既にあるデータを上書きしないようにする方法はありますか?

理想的には、出力配列のすべての要素をこのマスキング値に初期化し、マスクされていない要素のみがスプレッドシートに表示されるようにします。

4

2 に答える 2

3

Google でこれを見つけた人にとっては、数式に setValues() を使用すると、新しいシートで機能するようになりました。

より具体的には、次のようなコードを使用して、シートで作業を行った後に数式を元に戻しています。

function setValuesAndFormulas() {
  var sheet = SpreadsheetApp.getActive().getActiveSheet();
  var range = sheet.getDataRange();
  var values = range.getValues();
  var formulas = range.getFormulas();

  for (var i = 0; i < values.length; i++) {
    for (var j = 0; j < values[i].length; j++) {
      if (formulas[i][j].charAt(0) == "=") {
        values[i][j] = formulas[i][j];
      }
    }
  }

  range.setValues(values);
}

それが役立つことを願っています!

于 2014-10-14T01:25:28.793 に答える
0

setValues()残念ながら、 orsetFormulas()メソッドのマスキングはサポートされていません。ただし、メソッドに数式が指定されている場合はsetValues()正しく設定する必要があるため、 への 1 回の呼び出しで値と数式の両方を設定できる場合がありますsetValues()

range.setValues([['foo', '=LEN("bar")']]);
于 2013-01-30T14:47:19.197 に答える