【问题标题】:Lunch Count Daily Save and Wipe Script午餐计数每日保存和擦除脚本
【发布时间】:2017-07-29 15:39:45
【问题描述】:

我在一个学校系统工作,希望每天晚上保存他们当天的午餐号码,然后删除这些号码。我们试图找人为我们编写一个带触发器的脚本,但到目前为止还没有人能够弄清楚。任何帮助将不胜感激。这是我们最后的希望。 https://docs.google.com/a/bradleyschools.org/spreadsheets/d/1KZ8LuABtUE1I4jFKVzroXKaJVOcD9LArewRl5wRFRbA/edit?usp=sharing

【问题讨论】:

  • 欢迎来到 SO!查看这篇文章并提出一个更有可能得到回答的问题:stackoverflow.com/help/how-to-ask
  • 您应该发布到目前为止您尝试过的任何内容,并且您的电子表格链接也无法公开访问

标签: string triggers google-sheets


【解决方案1】:

午餐柜台网络应用程序

我对这个问题进行了尝试,就在这里。我让它作为一个包含在电子表格中的 web 应用程序工作,并且每天晚上 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>

代码.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;
}

这是网页应用在 Iphone 上的样子: 它真的没有那么大。我把它作为一个屏幕截图。在我的 iPhone 上,按钮大小约为 3/4",午餐数量显示在其上方。我真的不知道您想要什么,但我认为单个按钮是简单的用户界面。

电子表格如下所示:

【讨论】:

  • 今晚再次发布并重置。
猜你喜欢
  • 2014-09-02
  • 2013-08-14
  • 1970-01-01
  • 2015-09-03
  • 2021-09-22
  • 1970-01-01
  • 2018-08-27
  • 1970-01-01
  • 2016-01-19
相关资源
最近更新 更多