2016-06-28 10 views
1

私は現在Google Apps Scriptアプリケーションを開発しており、OnOpen-FunctionでUIを追加したいと考えています。しかし、問題は、OnOpen-FunctionがAddonまたはSpreadsheetまたはDoc-Fileのバインドされたスクリプトとしてのみ機能していることです。自動でGoogle Apps Script UIを開きます

私の質問は、新しい追加ファイル用のスタンドアロンアプリケーションとしてApps Script Codeをどのように実行できますか?

時間ベースのトリガーで試してみましたが、アプリスクリプトで作成するトリガーが多すぎます。新たに追加されたファイルに対してonOpen-Functionをトリガーする良い方法はありますか?ここで

は私のコードは、これまでのところです:

function tim(){ 
    ScriptApp.newTrigger("createSpreadsheetEditTrigger") 
    .timeBased() 
    .everyMinutes(1) 
    .create(); 
} 


function createSpreadsheetEditTrigger() { 
    var files = DriveApp.getFoldersByName("Development Lab").next().getFoldersByName("AppsScriptProgramm").next().getFoldersByName("Excel").next().getFiles(); 

    while (files.hasNext()){ 
    file = files.next(); 
    ScriptApp.newTrigger('onOpen') 
     .forSpreadsheet(SpreadsheetApp.openById(file.getId())) 
     .onOpen() 
     .create(); 
    } 
} 

function onOpen() { 
    SpreadsheetApp.getUi() 
     .createMenu('Metadata') 
     .addItem('Open', 'openDialog') 
     .addToUi(); 
} 

function openDialog() { 
    var html = HtmlService.createHtmlOutputFromFile('Index') 
     .setSandboxMode(HtmlService.SandboxMode.IFRAME) 
     .setWidth(900) 
     .setHeight(400); 
    SpreadsheetApp.getUi() 
    .showModalDialog(html, 'Metadaten zum Dokument: '+ SpreadsheetApp.getActive().getName()); 
} 
+0

これをonOpenと呼んではいけません。すなわちonTriggerOpen –

答えて

0

簡単な方法は、IF文を使用しています。

function tim(){ 
    ScriptApp.newTrigger("createSpreadsheetEditTrigger") 
    .timeBased() 
    .everyMinutes(1) 
    .create(); 
} 

になります。

function tim(){ 
var triger1 = ScriptApp.newTrigger('createSpreadsheetEditTrigger').timeBased().everyminute(1).create(); 
if (triger1 <2){triger1 
    } 
} 

ただし、試したことはありません。

+0

はい、それは動作していますが、まだトリガーの束を作成しています。不要な部分を検出して削除する方法はありますか? 制限を1分から下限に減らすにはどうすればよいですか?または、ディレクトリに新しいファイルが作成されたときにOnOpen-Functionを直接起動するだけですか? –

関連する問題