2017-08-11 107 views
0

我需要帮助来弄清楚如何在用于填充Google电子表格的html表单中更新选择内容之后刷新输入值。使用google.script.run重置html表单输入

代码:

function description(item){ 

    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName('DATA'); 
    var cell = sheet.getRange('ITEM'); 

    cell.setFormula('=VLOOKUP(' + item + ';ITEMS!$C$2:$AE;29;FALSE)'); 

    return cell.getValue(); 

} 

HTML:

... 

<select id="SKU" onchange="update();"><?!= Drop_SKU();?></select> 

<input id="description" value="<?!= ss.getRange('ITEM').getDisplayValue();?>"> 

... 

<script> 

    window.update=function(){ 

     var ss = SpreadsheetApp.getActive(); 
     var parameter = document.getElementById('SKU').value 
     var newValue = google.script.run.description(parameter); 

     document.getElementById('description').value = newValue; 

    } 

其结果,描述功能完全运行,但会导致设定不定值的输入 “原文”。

我错过了什么?

我会赞赏你的帮助。先谢谢你。

回答

0

google.script.run有两片,以确定如何在服务器端代码运行后做什么: .withSuccessHandler(successFunction) .withFailureHandler(failedFunction)

如果服务器端功能,没有运行错误,由withSuccessHandler定义的函数将运行,并且任何返回的值将传递给该函数。如果发生错误,则会执行withFailureHandler定义的函数。所以你的HTML脚本部分将如下所示:

<script> 

     window.update=function(){ 
     var ss = SpreadsheetApp.getActive(); 
     var parameter = document.getElementById('SKU').value 
     google.script.run.withSuccessHandler(showNewValue).withFailureHandler(functionFailed).description(parameter); 
    } 

    function showNewValue(newValue){ 
     document.getElementById('description').value = newValue; 
    } 

    function functionFailed(error){ 
     document.getElementById('description').value = 'Error returned: ' + error; 
    } 
</script> 

请注意,我没有看过其余代码以查看是否还有其他问题。

+0

感谢您的帮助。但是,很抱歉,这段代码根本没有提供任何操作。什么都没发生。 “描述”都不在服务器端运行。 –

+0

不,我终于成功了!有一些打字错误。非常感谢!!! –

+0

对不起。如果可以的话,编辑我的帖子以修复输入错误,以便其他人准确输入。 –