2017-01-05 4 views
1

"{client name}"のようなトークンを置き換えるために、ドキュメントプロパティを変数として使用しています。PropertiesServicesを使用しています。これらのプロパティはバインドされたスクリプトのみにスコープされているので、PHPアプリケーションから値を変更する方法を探しています。実行APIを使用してバインドされたスクリプトのメソッドを呼び出す

は、スタンドアロンスクリプトから多分実行APIを使用してバインドされたスクリプトの関数を呼び出し、またはすることが可能ですか? (ドキュメントは、私は、スクリプトが「スタンドアロンでない場合、あなたがそれらを使用することはできませんと思わせるが)そうでなければ、私の代わりに代わりスクリプトのプロパティを使用する必要があります。

+1

スクリプトスクリプトでもスクリプトのプロパティを利用できるため、プロパティストアの選択はあなた次第です。ドキュメントのプロパティはスコープの点で最大の役割を果たします...バインドされたスクリプトはスタンドアロンスクリプト(スクリプトエディタのファイルメニュー)と同じ場所にあるScript Idも持っていますので、その関数を呼び出す際に障害はありません実行APIから。 (ただし、APIを自分自身を使用していないことがあります。) – FTP

答えて

2

それは実行APIを実行しているユーザーは、下のバインドスクリプトは、ドキュメントプロパティを読み取ることができ、実行APIで走ったドキュメントへのアクセス権を持っている場合のように見えます。

は、ここに私のテストです:新しいスプレッドシートを作成 。新しいスクリプトを作成します。 onOpenのメニューを使用してデータを追加します。スクリプト内でexecuteAPIを実行します。ログには、文書のプロパティが正常に表示されます。

function onOpen() { 
    var testMenu = SpreadsheetApp.getUi().createMenu("test") 
    testMenu.addItem("Add some data", "addData").addToUi(); 
    testMenu.addItem("Preview data", "getData").addToUi(); 
} 


function getData(){ 
    var keys = PropertiesService.getDocumentProperties().getKeys(); 
    SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().clear().appendRow(keys) 
} 

function returnData(){ 
    return PropertiesService.getDocumentProperties().getKeys(); 
} 


function addData(){ 
    var DT = new Date().toString() 
    PropertiesService.getDocumentProperties().setProperty(DT,DT); 
} 



function executeAPI(){ 
    var url = 'https://script.googleapis.com/v1/scripts/'+ScriptApp.getProjectKey()+':run'; 

    var payload = JSON.stringify({"function": "returnData","parameters":[], "devMode": true}); 

    var params={method:"POST", 

       headers:{Authorization: "Bearer "+ ScriptApp.getOAuthToken()}, 
       payload:payload, 
       contentType:"application/json", 
       muteHttpExceptions:true}; 
    var results = UrlFetchApp.fetch(url, params); 
    Logger.log(results) 
} 
+0

それは私のために動作しません、それはあなたのスクリプトでは、あなたが、あなたのスプレッドシートを呼び出す/言及しなかった、おそらくあなたが使用している、「ヌルの 『getKeys』メソッドを呼び出すことはできません」を与えます(スプレッドシートのApps Scriptで作成された)ビルトインスクリプトがありますが、スタンドアロンプ​​ロジェクトを使用している場合は、ドキュメントプロパティストアにアクセスできません(スムーズに考えます)。スプレッドシートを取得した後にDocumentsプロパティを追加したり、 * Script.getDocumentPropertiesStore(spreadsheetId) – Faresd

関連する問題