午餐计数每日保存和擦除脚本

时间:2017-07-29 15:39:45

标签: string triggers google-sheets

我为一个学校系统工作,希望每天晚上保存他们的午餐号码,然后擦掉号码。我们试图找人给我们写一个带触发器的脚本但到目前为止还没有人能够弄明白。任何帮助将受到高度赞赏。这是我们最后的希望。 https://docs.google.com/a/bradleyschools.org/spreadsheets/d/1KZ8LuABtUE1I4jFKVzroXKaJVOcD9LArewRl5wRFRbA/edit?usp=sharing

1 个答案:

答案 0 :(得分:0)

午餐柜台WebApp

我对这个问题进行了一次尝试。我将它作为电子表格中包含的webapp工作,午餐时间每晚10:00左右发布并重置。每次你对URL进行操作时,都会检查是否设置了触发器,如果​​没有,则创建一个新触发器。但它不会创造不止一个。昨晚我检查了它,扳机工作正常。不要忘记为postLunchCount输入SpreadSheetID,并运行setupNightlyTrigger()一次以安装触发器。在此之后它会自行运行。

LunchCounter.html

<!DOCTYPE html>
<html>
  <head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script>
    $(function() {

    google.script.run
      .withSuccessHandler(displayCount)
      .getCount();

    });
    function incrementCount()
    {
      google.script.run
          .withSuccessHandler(displayCount)
          .lunchCounter();
    }
    function displayCount(n)
    {
      $('#cnt').text(n);
    }
    console.log('My Code');
    </script>
  </head>
  <body>
    <div id="cnt"></div>
    <input type="button" id="btn1" value="Increment" onClick="incrementCount();" style="width:200px;height:200px;"/>
  </body>
</html>

Code.gs

function onOpen()
{
  SpreadsheetApp.getUi().createMenu('My Tools')
      .addItem('Lunch Counter','lunchCounter')
      .addItem('Load SideBar', 'loadSideBar')
      .addItem('Reset Lunch Count','resetLunchCount')
      .addItem('Post Lunch','postLunchCount')
      .addToUi();
}

function lunchCounter()
{
  var prop=PropertiesService.getScriptProperties();
  var count=Number(prop.getProperty('LunchCount'));
  count++;
  prop.setProperty('LunchCount', count);
  return(count);
}

function getCount()
{
  var prop=PropertiesService.getScriptProperties();
  var count=Number(prop.getProperty('LunchCount'));
  return(count);
}

function resetLunchCount()
{
  postLunchCount();
  PropertiesService.getScriptProperties().setProperty('LunchCount', '0');
}

function postLunchCount()
{
  var ss=SpreadsheetApp.openById('SpreadSheetID');
  var sht=ss.getSheetByName('DailyLunchCount');
  var dt=Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "yyyy-MM-dd");
  var cnt=getCount();
  var row=[dt,cnt];
  sht.appendRow(row);
}

function setupNightlyTrigger()
{
  if(!isTrigger('resetLunchCount'))
  {
    ScriptApp.newTrigger('resetLunchCount').timeBased().atHour(22).everyDays(1).create();
  }
}

function loadSideBar()
{
  var html = HtmlService.createHtmlOutputFromFile('LunchCounter');
  SpreadsheetApp.getUi().showSidebar(html);
}

function doGet()
{
  setupNightlyTrigger();
  var html = HtmlService.createHtmlOutputFromFile('LunchCounter');
  html.addMetaTag('viewport', 'width=device-width, initial-scale=1');
  return html.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL)

}

function isTrigger(handlerName)
{
  var r=false;
  var triggers = ScriptApp.getProjectTriggers();
  for (var i=0;i<triggers.length;i++) 
  {
    if (handlerName==triggers[i].getHandlerFunction()) 
    {
      r=true;
      break;
    }
  }
  return r;
}

这就是webapp在Iphone上的样子: 它真的不是那么大。我做了一个屏幕截图。在我的iPhone上按钮大小约为3/4&#34;并且午餐计数在它上面显示。我不知道你想要什么,但我认为一个按钮就是简单的用户界面。

enter image description here

电子表格看起来像这样:

enter image description here