2017-06-07 22 views
0

私はいくつかのstackoverflowの例の助けを借りてスクリプトをコーディングしましたが、もう少し進めようとすると立ち往生します。googleスクリプトを使ってGoogleスプレッドシートに値をドロップします

非常にわかりやすいようですが、うまくいかないようです。

だからここにあります: いくつかのドロップダウンメニューでダイアログボックスを開始するHTMLスクリプトをコーディングしました。ドロップダウンメニューのデータは動的で、スプレッドシート内の範囲から取得されます。私は、ユーザーがスプレッドシートを開き、スクリプトを実行し、ドロップダウン値からオプションを選択したい。これらのドロップダウン値は同じスプレッドシートに貼り付けられます。

私が働いているビットは、コードがドロップダウンボックスに移動する必要がある値を見て、そのことを示し、送信ボックスがあることです。

しかし、私はスプレッドシートに値を提出することはできません。誰でも私を助けたり、正しい方向に私を向けることができますか?

test.gs

function openInputDialog1() { 
    var html = HtmlService.createHtmlOutputFromFile('Test').setSandboxMode(HtmlService.SandboxMode.IFRAME); 
    SpreadsheetApp.getUi() 
    .showModalDialog(html, 'Add Item'); 
} 


function getMenuListFromSheet() { 
    return SpreadsheetApp.getActive().getSheetByName('Part Names') 
    .getRange(1,5,6,1).getValues(); 
} 

function getThicknessFromSheet(){ 
    return SpreadsheetApp.getActive().getSheetByName('Part Names') 
    .getRange(1,5,6,1).getValues(); 
} 

function itemadd(form) { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName('Part Names'); 
    var LastRow=sheet.getLastRow(); 
    Logger.log(LastRow); 
    Logger.log(form); 
    sheet.getRange(LastRow+1,1,1,2).setValues(form); 


    return true; 

} 

Test.htmlという

<!DOCTYPE html> 
<html> 
<p>List of parts:</p> 

<select id="menu"> 
    <option></option> 
    <option>Google Chrome</option> 
    <option>Firefox</option> 
</select> 

<select id="thickness"> 
    <option></option> 
    <option>1</option> 
    <option>2</option> 
</select> 

<script 
src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"> 
</script> 
<input type="submit" value="Submit" onclick="select()"> 
<script> 
// The code in this function runs when the page is loaded. 
$(function() { 
    google.script.run.withSuccessHandler(showMenu) 
     .getMenuListFromSheet(); 
    google.script.run.withSuccessHandler(showThickness) 
     .getThicknessFromSheet(); 

}); 

/**function showThings(things) { 
var list = $('#things'); 
list.empty(); 
for (var i = 0; i < things.length; i++) { 
    list.append('<li>' + things[i] + '</li>'); 
} 
} 
**/ 
function showMenu(menuItems) { 
    var list = $('#menu'); 
    list.find('option').remove(); // remove existing contents 

    for (var i = 0; i < menuItems.length; i++) { 
    list.append('<option>' + menuItems[i] + '</option>'); 
    } 
} 

function showThickness(menuThickness) { 
    var list = $('#thickness'); 
    list.find('option').remove(); // remove existing contents 

    for (var i = 0; i < menuThickness.length; i++) { 
    list.append('<option>' + menuThickness[i] + '</option>'); 
    } 
} 



</script> 
<script> 
function select(){ 
var x = document.getElementById('menu').value; 
var y = document.getElementById('thickness').value; 

google.script.run 
      .itemadd(x,y) 

google.script.host.close(); 
</script> 


</html> 

私はどこかに、スクリプトやHTML側との間の接続を行うが、どこ理解できないわけではないことを知っています。

おかげで、 ティム

答えて

0

ここにあなたのコードから欠けているビットです:あなたCode.gs

function sheetConnect(){ 

    var e = document.getElementById('menu'); //choices are Google Chrome and Firefox 
    var name = e.options[e.selectedIndex].value; //get whatever the user selected 
    google.script.run.writeData(name); //pass the value to Code.gs 
} 

function writeData(name){ 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName('Sheet1'); //whatever your sheet's name 
    var cell = sheet.getRange(1,8); //assign position to column H row 1 
     cell.setValue(name);  // write selected data from Dropdown named 'menu' 
} 

結果:あなたの.HTMLファイルで

<input type="submit" value="Submit" onclick="sheetConnect()"> 

は、

enter image description here

プロジェクトを完了するために、ここに知識を使用:)

+0

ありがとうございました。 HTMLコードを挿入する場所を教えてください。 HTMLは先週まで私にとって全く新しいものだったので、構文の仕組みに関する少しの知識が不足しています。ボタンのidに.HTMLの関数sheetConnect()を代入して、最終的にonclickイベントを使ってセレクションをシートに書き込む必要がありますか? select()メソッドの代わりに –

+0

を使用して、入力タグにmyConnect()を使用します。 – noogui

0

は私が前にGSを使用していないが、あなたが右に見える他の例を見てから、しかし、2行目に、あなたは、もしわからない、代わりにHtml.Serviceのtml.Serviceを持っていますすべてのあなたの問題を解決するが、それはそれを壊すだろう。

+0

おかげで、申し訳ありませんそれはstackoverflowのに私のスクリプトからの私の最後のタイプミスです。私のスクリプトでは、そこに正しいHtml.Serviceがあります。今更新しました –

関連する問題