首页 > 解决方案 > 表单向工作表提交数据后,向工作表中的事件添加数字

问题描述

我正在尝试创建一个脚本,以在提交表单时将“事件”编号添加到事件编号列(第 1 列),并通过检测新数据将数据添加到链接的 Google 工作表(工作表名称“IIR”)中第 4 列。第一行包含工作表标题(由表格中的问题开发)。我从其他来源窃取了一个具有相同意图的脚本,该脚本运行没有错误,但我没有得到想要的结果(我是 Newbee)。

//CORE VARIABLES
// The column you want to check if something is entered.
enter code here var COLUMNTOCHECK = 4; // Where you want the date time stamp offset from the input location. [row, column]
var ADDNUMBER = [1,1]; // Sheet you are working on
var SHEETNAME = "IIR"

function onEdit(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("IIR"); //checks that we're on the correct sheet.
      if( sheet.getSheetName() == SHEETNAME ) { 
          var selectedCell = ss.getActiveCell(); //checks the column to ensure it is on the one we want to cause the number to appear.
          if( selectedCell.getColumn() == COLUMNTOCHECK) { 
              var IncidentNumber = selectedCell.offset(ADDNUMBER[1],ADDNUMBER[1]);
                  for (r=1; r<999; r++) {
                  ss.getRange(r,1).setValue(r);
          }
      }
}}

标签: google-apps-script

解决方案


将事件编号附加到链接工作表中的时间戳

此函数将添加一个事件编号,该编号由时间戳组成,方法是使用两位数的年份、两位数的月份、两位数的日期、一个破折号和连续递增的数字。它还保留时间戳并将事件编号添加到单元格的底部。

function formSubmit(e) {
  if(e.values && e.values[1]) {
    Logger.log(JSON.stringify(e));
    var sh=e.range.getSheet();
    sh.getRange(e.range.rowStart,1).setValue(getIncidentNumber(e));
  }
}

function getIncidentNumber(e) {
  var ps=PropertiesService.getScriptProperties();
  var ts=e.values[0];
  var key=Utilities.formatString('%s%s%s',ts.slice(8,10),ts.slice(0,2),ts.slice(3,5));
  if(ps.keys && ps.getKeys().indexOf(key)==-1) {
    ps.setProperty(key,1);
    return key + "-" + 1;
  }else{
    var value=ps.getProperty(key);
    ps.setProperty(key, Number(value) + 1)
    var rv = ts + '\n' + key + "-" + Number(value).toFixed();
    return rv;
  }
}

推荐阅读