2017-09-03 1 views
0

以下のコードを呼び出して一時シートを作成するカスタム関数を記述しました。私がGoogleエディタでそれを実行したとき、私は認可を求められ、アクセス権が与えられました。insertシートへの呼び出しは許可されていましたが、スプレッドシートからの呼び出し時にdosentが動作します

私のカスタム関数はGoogleエディタで正常に動作しますが、スプレッドシートで機能しません。「あなたはinsertSheetを呼び出す権限がありません」というエラーが表示されます。

私はスプレッドシートとカスタム関数を作成しましたので、私はすべてのものにアクセスできます。

var tempSheetName = "temp"; 
    var sp = SpreadsheetApp.getActiveSpreadsheet(); 
    var activeCell = sp.getActiveCell(); 
    sp.insertSheet(tempSheetName); 
+0

スプレッドシート内からどのように呼び出すのですか? –

+0

一時的なシートを作成するためのコードを含むカスタム関数名 "= getSlopeSMA()"を使用して呼び出します。 –

答えて

0

このようにして、理由を知ることができます。しかし、セル内のカスタム関数が新しいタブを作成するのに適しているかどうかは本当に分かりません。通常、文書の操作ではなくセル内で計算を行います。

このような機能のメニュー項目を作成してそこから呼び出すとどうなりますか?

function onOpen() { 

    // instantiate UI object 
    var ui = SpreadsheetApp.getUi(); 

    // create the menu 
    ui.createMenu("Functions") 
    .addItem("Create Sheet", "createSheet") 
    .addToUi(); 
} 

function createSheet() { 
    // get active spreadsheet 
    var ss = SpreadsheetApp.getActiveSpreadsheet(), 
     sheetName = 'mySheet', 
     sheet = ss.getSheetByName(sheetName); 

    // delete sheet if it already exists 
    if (sheet) ss.deleteSheet(sheet); 

    // insert sheet 
    ss.insertSheet(sheetName, 0); 
} 

まだエラーがありますか?興味があるだけ... Google Appsのガイドから

+0

ビルド関数 "= IF"、 "= COUNT" ......のような "カスタム関数"で使用したいセル内に宣言します。 –

+0

データを配置して計算を行う一時的なスペースとしてシートを使用します。 Google Appsスクリプトでは、通常のシート機能(arrayfunction()、Googleファイナンス()など)にアクセスできないため、シートで行う必要があります。 –

+0

あなたのコードとメニューを使って、もう一度やり直すことができます。それはあなたのために働くのですか?あなたのコードがinsertSheetを使用しているようです。私の関数は計算の後に数値を返します。したがって、Idではメニューの代わりにセルに入るのが好きですが、それが唯一の方法であれば私は回避策を使うかもしれません。 –

1

Link

カスタム関数は、あなたがXサービスを呼び出すための 権限がありませんエラーメッセージをスローし、サービスは、ユーザー認証 を必要とし、これができない場合。カスタム関数で使用することができます。

+0

私はスプレッドシートサービスが許可されていると思います。エラーは関数に関連しています。 –

関連する問題