如何在我的Google Apps脚本中实现DatePicker

我想使运行以下脚本的用户选择两个日期start_date_cal和end_date_cal。

通过大量阅读有关如何执行此操作的信息,我发现有关Html Services的很多知识,但是我无法在代码中成功实现它。

function main_cotisations() {
var cell_col_number = "";
var cell_row_number = "";
var ss = Spreadsheetapp.getactive();
var sheet = ss.getSheetByName('2019-2020');
//ss.setactiveSelection('A3');
ss.getRange('A3').activate();

// Get active cell and get value of it
var cell = ss.getcurrentCell();
var cellValue = cell.getvalue();

var start_date_cal = new Date('December 12,2019 19:00:00 +1100');
var end_date_cal = new Date('December 12,2019 22:30:00 +1100');

// Start the loop
while (cellValue != ""){
  cellValue = cell.getvalue();
  if (cellValue != "") {

  var infos_user = {};
  infos_user.prenom = sheet.getRange(cell.getRow(),cell.getcolumn()+2).getvalue();
  infos_user.mail = sheet.getRange(cell.getRow(),cell.getcolumn()+3).getvalue();
  infos_user.solde_a_payer = sheet.getRange(cell.getRow(),cell.getcolumn()+8).getvalue();
  infos_user.url_calendar = 'https://www.google.com/calendar/render?action=TEMPLATE&text=Penser+aux+capitations+: '+infos_user.solde_a_payer+'F&location=Ducos&dates='+getRelativeDate(start_date_cal)+'%2F'+getRelativeDate(end_date_cal);

  if (sheet.getRange(cell.getRow(),cell.getcolumn()+9).isChecked()  == false) {
    sendmail_paiement(infos_user);  
  }
  };
  cell = cell.offset(1,0);
};  

var infos_globales = {};
infos_globales.solde_global = sheet.getRange(cell.getRow()-1,cell.getcolumn()+8).getvalue();
infos_globales.nb_user_hospitalier = sheet.getRange(cell.getRow()-1,cell.getcolumn()+9).getvalue();
infos_globales.nb_user_retard =sheet.getRange(cell.getRow()-1,cell.getcolumn()+10).getvalue();
}

//***********************************************************************************************************************

function getRelativeDate(given_date) {
//{given_date = Utilities.formatDate(temp_date,"GMT","yyyyMMdd'T'HHmmss'Z'");}
temp = Utilities.formatDate(given_date,"yyyyMMdd'T'HHmmss'Z'");
return temp.toString();
}

function sendmail_paiement(infos_user) {

 var templ = HtmlService
.createTemplateFromFile('tpl_mail_exceptionnel');

templ.infos_user = infos_user;
var message = templ.evaluate().getcontent();

if (infos_user.solde_a_payer>0) {
  MailApp.sendEmail(
    infos_user.mail,"Rappel de capitations",'',{htmlBody: message,}
  );
}
}

在这里,我会有所帮助。

jayoyhjay 回答:如何在我的Google Apps脚本中实现DatePicker

可以通过在其中开发WebApp来实现,您可以创建一个带有日期选择器和提交按钮的表单,以将日期发送回应用程序脚本并执行您的代码。

我做了一些演示:

转到应用脚本并创建一个新项目:

function doPost(e) {
  Logger.log(e.parameter.start);
  Logger.log(e.parameter.end);
  return HtmlService.createHtmlOutput("Hi there,<br> When you click submit doPost() function is called. <br> By calling e.parameter.start you'll get the desired dates <br> Like:" +e.parameter.start+ "<br>Now check the logs. <br> Good luck");
}

function doGet(e) {
    return HtmlService.createHtmlOutputFromFile('index');
}

现在,在应用脚本上,按文件->新建-> HTML文件->将其命名为“索引”

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
  <form action="PASTE_YOUR_WEBAPP_LINK_HERE" method="post">
    <label for="start">Start date:</label>
    <input type="date" id="start" name="start"
    value="2019-10-21"
    min="2019-01-01" max="2020-12-31">
    <input type="date" id="end" name="end"
    value="2019-10-22"
    min="2019-01-01" max="2020-12-31">    
    <input type="submit" value="Submit">
  </form> 
  </body>
</html>
  • 转到发布->部署为Web应用
  • 复制链接并将其发布在索引HTML文件中(如果显示为PASTE_YOUR_WEBAPP_LINK_HERE

现在您可以访问已部署的WebApp:

任何时候单击提交都会调用doPost()函数。

因此,现在您可以将代码粘贴到doPost()函数中,可以使用datepicker中的日期并执行所需的任何应用程序脚本。

希望这会有所帮助。

本文链接:https://www.f2er.com/3110360.html

大家都在问