2017-12-21 22 views
0

私はGoogleフォームを作成したGoogleスプレッドシートを持っています。スプレッドシートには2つのシートがあります.1つはフォーム応答で、もう1つは設定データです。スプレッドシートには、コンフィグレーションデータを使用してAPI呼び出しを行う、フォームレスポンスで起動されるAppsスクリプトスクリプトが添付されています。このスクリプトは、私が望むのと全く同じように動作します。AppsスクリプトからGoogleフォームにアクセスすると、同じGoogleスプレッドシートに結び付けられます

フォームの質問のいずれかの選択肢を更新しようとするスプレッドシートチェンジトリガスクリプトを作成しました。ただし、FormApp.openByIdまたはFormApp.openByUrlを使用すると、「呼び出す権限がありません...」というエラーが発生します。

スプレッドシートを変更するスクリプトのアクセス許可をフォームに与える方法はありますか?

私はここで必要なものに対してより良い設定があります:フォームの応答に基づいて、フォームとスクリプトの間で情報の同期を保つようにします。

コード:

function onEdit(e) { 
    var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 

    // Do some work to get the configuration data. This works fine. 

    // Now try to get access to the form to update it 
    var responseSheet = activeSpreadsheet.getSheetByName('Form Responses'); 
    // var form = FormApp.getActiveForm(); // returns null 
    var form = FormApp.openByUrl(responseSheet.getFormUrl()); 
    ... 
} 

最終ラインがで失敗します。

実行に失敗しました:あなたはopenByUrl

+0

サンプルコードを投稿してください – Kos

+0

あなたはGoogleアカウントでスクリプトを承認しました。このアカウントには、開こうとしているフォームを編集するための適切な権限があることを確認してください。このエラーは、アカウントの権限が不十分であるという考えを示しています。 – Casper

+0

いくつかのコードを追加しました@Kos –

答えて

0

あなたがのonEditのトリガをインストールする必要があります()を呼び出すための権限がありません。 onEdit()で承認が必要なメソッドを使用する場合は、トリガーとしてインストールする必要があります。このスクリプトを実行すると、onEdit()のトリガをインストールできます。また、手動でインストールすることもできます。トリガーについてはherehereで読むことができます。

function installtrigger() { 
    var ss = SpreadsheetApp.getActive(); 
    ScriptApp.newTrigger('onEdit') 
     .forSpreadsheet(ss) 
     .onEdit() 
     .create(); 
} 

トリガーをインストールした後、もう一度やり直してください。

関連する問題