web-dev-qa-db-ja.com

GoogleスクリプトのsetValue権限

Googleドキュメントのスプレッドシートのセルに値を設定しようとしています。

function exampleFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var range1 = sheet.getRange("A1");
  var value1 = range1.getValue();
  value1+=1;
  range1.setValue(2);
  return value1;
}

この関数でセルに影響を与えようとすると、次のエラーが表示されます。

SetValueに必要な権限がありません。 (10行目、ファイル "ddd")

私がそれをどのようにして実現できるか知っていますか?実際に、影響を受けるセルがセルA1の値を取得し、A1 +1の値を増やしたいと思います。

ありがとうございました

17
zyrup

ドキュメントから:

カスタム関数は値を返しますが、セルの外に値を設定することはできません。ほとんどの場合、セルA1のカスタム関数はセルA5を変更できません。ただし、カスタム関数がdouble配列を返す場合、結果は関数を含むセルをオーバーフローし、カスタム関数を含むセルの下および右のセルを埋めます。 return [[1,2]、[3,4]];。を含むカスタム関数でこれをテストできます

参照: スプレッドシートのカスタム関数

27
Serge insas

上記の関数をカスタム関数として使用しているようです。つまり、次のようにして、GoogleスプレッドシートのUIのセル数式から呼び出されます。

=exampleFunction()

Googleスプレッドシートのカスタム関数 には、権限を必要とするGoogle Appsスクリプトサービスの呼び出しに使用できないなどの制限があります。回避策は、別の手段を使用して関数を呼び出すことです。

また、これらは ダイアログおよびサイドバーGoogle Apps Script Web apps から、および Google Apps Script実行API を使用して呼び出すこともできます。

5
Rubén