2017-11-22 14 views
0

スクリプトを実行するときに、そこに設定されているパラメータが読み込まれるようなものを作成しようとしています。設定で定義されたパラメータでスクリプトを実行しています

たとえば、ユーザーがスクリプトを実行するための詳細やパラメータを入力できるカスタムサイドバーを読み込みます。これらのパラメータは変更されるまで残っていますが、これらのパラメータを使用するスクリプトを実行するたびに必要なものではありません。

よく似た設定メニューです。

私はいくつかのアドオンで似たものを見ましたが、誰かがこれを行う方法について正しい方向を指してくれますか?

すでにスクリプトを正常に実行させるには、パラメータを入力して設定できるUIが必要です。可能であれば、スプレッドシートのシートからそれを読んではいけません。

編集:

これまでのところ、私が持っているアップデート(2): HTML:

function showside(){ 
 

 
SpreadsheetApp.getUi().showSidebar(HtmlService.createHtmlOutputFromFile('body')) 
 
} 
 

 
function setProperty(objectForm){ 
 
    PropertiesService.getScriptProperties().setProperties(
 
    {a1: objectForm.a1 , 
 
\t \t a2: objectForm.a2, 
 
\t \t p1: objectForm.p1, 
 
\t \t p2: objectForm.p3}) 
 
    return 'Updated' 
 
}
<!DOCTYPE html> 
 
<html> 
 
    <head> 
 
    <script> 
 
    function readProperty(){ 
 
    
 
    var settings = PropertiesService.getScriptProperties(), keys = settings.getKeys() 
 
    Logger.log('running') 
 
    for (var i =0;i<keys.length;i++){ 
 
    document.getElementbyID(keys[i].toUpperCase()).value = settings.getProperty(keys[i]) 
 

 
    } 
 
} 
 

 
function handleFormSubmit(objectForm){ 
 
google.script.run.setProperty(update).setProperty(objectForm) 
 
} 
 

 
function update(update){ 
 
     var div = document.getElementById('output'); 
 
     div.innerHTML = 'Updated!'; 
 
     } 
 
</script> 
 

 
    <base target="_top"> 
 
    </head> 
 
    <body onload="readProperty()"> 
 
    <form id="myForm" onsubmit="handleFormSubmit(this)"> 
 
    
 
    a1<input type="url" id="a1" value="" /> 
 
    a2<input type="url" id="a2" value="" /> 
 
    a3<input type="url" id="a3" value="" /> 
 
    P1<input type="text" id="P1" value="" /> 
 
    P2<input type="text" id="P2" value="" /> 
 
    <input type="submit" value="Submit" /> 
 
    </form> 
 
    <div id="output"></div> 
 
    </body> 
 
    
 
    
 
</html>
私が利用可能getscriptpropertyそれは、すべてのユーザーが利用できるがあることがわかり

+0

ので、今、私はこれを行っているが、それは新しいものを書いてみましょうだけでは、すでに設定されたプロパティを読んされていないようです。 – mfizz

答えて

0

大まかなアプローチです。そこから即興。

loadScript()内のコメントを読み取ります。

document.getElementById("formWithData").onsubmit = loadScript(); 
 

 
function loadScript() { 
 
    // get data from submitted form 
 
    // this way script will re-run with data based on what u give in the form 
 
}
<form id="formWithData"> 
 
<input type="text" placeholder ="enter condition 1"> 
 
<input type="text" placeholder ="enter condition 2"> 
 
<input type="text" placeholder ="enter condition 3"> 
 
</form>

+0

コメントありがとう私はちょうど私があなたの考えを読んでからたくさんのグーグルグーグルを学んだことから私の質問を改訂しました。これは私がこれまでに出てきたものです。 – mfizz

+0

サイドバーのhtmlに行きます。いくつかのhtmlコンポーネントが必要です。これを介して、スクリプトをトリガーしたい(フォーム送信やボタンクリックなど)。フォーム提出が上記のアプローチを使用する場合。ボタンをクリックすると上のスクリプトの 'onsubmit'を 'onclick'で置き換え、フォームIDをクリックしている要素のidに置き換えます –

関連する問題