首页 > 解决方案 > 功能有效,但单元格中没有任何内容

问题描述

所以我有一个名为 shift 的函数,它根据时间返回用户所处的班次。

当我运行程序时,时间和日期会进入我的电子表格中的单元格,但我的班次值没有。我知道我的 shift 函数返回一个值,因为我已经使用 test 函数对其进行了测试,并且正确的值出现在我的日志中。这是我的代码:

const timezone = SpreadsheetApp.getActive().getSpreadsheetTimeZone();

/** @returns {string} */
function timestamp() {
  var timestamp_format = "HH:mm:ss";
  return Utilities.formatDate(new Date(), timezone, timestamp_format);
}

/** @returns {string} */
function datestamp() {
  var datestamp_format = "yyyy-MM-dd";
  return Utilities.formatDate(new Date(), timezone, datestamp_format);
}

function shift() {
  var shift;
  const dt = timestamp();
  if(dt > "08:00:00" && dt < "13:59:00"){
    shift = "1";
  }
  return shift;
} 

function test(){

  shifts = shift();
  console.log(shifts);
}

/* @Process Form */
function processFormHood(formObject) {
  var url = "GOOGLE DOCS URL";
  var ss = SpreadsheetApp.openByUrl(url);
  var ws = ss.getSheetByName("SHEETNAME");
  
  ws.appendRow([
                datestamp(),
                timestamp(),
                shift()])
}

最后一个函数从我的 HTML 表单中获取值并将其写入我的电子表格。一个例子是“formObject.value”,我试图用我的 shift 函数来做到这一点,但它不起作用。它应该在的单元格被跳过,它被填满后的所有内容。

标签: javascriptgoogle-apps-scriptgoogle-sheets

解决方案


看来我所要做的就是而不是拥有

function shift() {
 var shift;
  const dt = timestamp();
  if(dt > "08:00:00" && dt < "13:59:00"){
    shift = "1";
  }
  return shift;
} 

我需要做的是让它在不使用变量的情况下返回:

function shift() {
  const dt = timestamp();
  if(dt > "06:00:00" && dt < "13:59:99"){
    return 1;
  }
  else if(dt > "14:00:00" && dt < "21:59:59"){
    return "2,3";
  }
}

推荐阅读