使用库

时间:2016-08-06 12:05:20

标签: jquery html google-apps-script

我正在编写一个脚本,我正在使用独立脚本从库中调用函数:

HTML 文件如下所示:

<!DOCTYPE html>
<html>
  <head>
  
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.9.1/themes/cupertino/jquery-ui.css">
<style type="text/css"> .demo { margin: 0px ; color : #AAA ; font-family : arial sans-serif ;font-size : 10pt } 
                            p { color : black ; font-size : 11pt } 
                            .ui-datepicker th {padding:5px;}
                            .ui-datepicker table {font-size:10px;}
                            .ui-widget {font-size:12px;}
                        input{width:100%;}
</style>
    <base target="_top">
  </head>
  <body>
    <div class="demo" >
<div style="width:30%;text-align:left;float:left;">
<p> Candidate Email : </p>
<p> Updated Status : </p>
<p> Assigned To :</p>
<p> Date :</p>
</div>
<div style="width:70%;text-align:left;float:left;">
<p> <input class="email" type="text" /></p>
<p><input class="status" type="text" /></p>
<p><input class="assigned" type="text" /></p>
<p><input type="text" name="StartDate" id="startdatepicker" /> </p>
</div>

<input class="submit" type="button" value="Submit" disabled=""/>
</div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.9.1/jquery-ui.min.js"></script>
<script>
$(document).ready(function(){
$(".email").val(email);
$(".status").val(status);
$(".assigned").val(assigned);
$(document).on('click','input.submit',function(){

submitDates();

});
   $( "#startdatepicker" ).datepicker({
      showWeek: true,
      firstDay: 0,
     });
$(document).on('change','#startdatepicker',function(){
 if($("#startdatepicker").val()!='')
 {
   $("input.submit").removeAttr("disabled");
 }
 else { 
 $("input.submit").attr("disabled","true");
 }
});

});

</script>
<script>
function submitDates() {

  var startDate = $("#startdatepicker").val();
  var email = $(".email").val();
  var status = $(".status").val();
  var assigned = $(".assigned").val();
  
  google.script.run
        .withSuccessHandler(
        
           // Dates delivered, close dialog
           function() {
             
             google.script.host.close();
           })
           // Display failure messages
         .withFailureHandler(
           function() {
             var div = $('<div id="error" class="error">' + "Please enter the correct Date" + '</div>');
             div.after($("#demo"));
           })
         .statusLogger(email, status, assigned, startDate);*/
}


</script>
  </body>
</html>

gs文件如下所示:

function onEdit(event) { 

var lSheet = SpreadsheetApp.getActive().getSheetByName("Status Logs");
var sheet = event.source.getSheetByName('Tracker'); 
var actRng = event.source.getActiveRange(); 
var editColumn = actRng.getColumn(); 
var index = actRng.getRowIndex(); 
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues(); 
var dateCol = headers[0].indexOf("Status Change Date"); 
var updateCol = headers[0].indexOf("Application Status");
var emailCol = headers[0].indexOf("Email");
var assignCol = headers[0].indexOf("Assigned To");
var intType = sheet.getRange(index,updateCol+1).getValue();
var email = sheet.getRange(index,emailCol+1).getValue();
var assignedTo = sheet.getRange(index,assignCol+1).getValue();

if (dateCol > -1 && index > 1 && editColumn == updateCol+1) { 
//lSheet.appendRow([email, intType, sheet.getRange(index, dateCol + 1).getValue(),assignedTo]);

var html = HtmlService.createHtmlOutputFromFile('dateDialogue')
  .setWidth(300)
  .setHeight(200)
  .getContent();

var html2 =  HtmlService.createHtmlOutput(html + '<script>var email= "'+ email +'";var status="'+ intType +'";var assigned="'+ assignedTo +'";</script>');
SpreadsheetApp.getUi() 
  .showModalDialog(html2, 'Please enter the Date');
} 
}

statusLogger函数只需在工作表中附加一行。

问题是,虽然google.script.run正在运行,但google.script.host.close()无法正常工作。有帮助吗?

1 个答案:

答案 0 :(得分:0)

从你的问题我得出的结论是你有两个脚本。一个是文档绑定脚本,另一个是独立脚本,作为库包含在文档绑定脚本中。

在项目中添加脚本作为库时,为其分配标识符。然后可以使用此标识符从 code.gs 调用库函数。

示例:

我有一个名为 stackflow 的独立脚本,我将其作为外部库包含在我的项目中。

include library dialog

我给库的标识符是 stackflow

在我的独立脚本(包含在库中)

function testLibraryFunction(){
  return "successful execution of library function";
}

在我的实际项目中,我将尝试像这样访问库函数

<强> code.gs

function executeLibraryCode(){
  var result = stackflow.testLibraryFunction();
  Logger.log(result);
  return result
} 

在我的html文件中,我将调用executeLibraryCode(),它将从库中调用testLibraryFunction()函数。

HTML文件:

google.script.run
    .withSuccessHandler(
          // callback function
       )
     .withFailureHandler(
          // callback function
       )
     .executeLibraryCode();

另请在评论中提及@ocordova提及.statusLogger后的html文件中删除* /。