javascript - 单击按钮时电子表格功能不运行

标签 javascript google-apps-script google-sheets

我之前问过two-part question ,只有一部分得到答复然后关闭,而另一部分则没有得到答复。我正在重新询问那部分。

我负责为我的团队创建“自动”项目跟踪表。自动是指有人按下按钮,它会记录日期/时间戳,并自动计算他们在该项目上花费的时间。

但是,当我将脚本连接到 Google 绘图以充当按钮时,它不会执行任何操作,而且我无法弄清楚原因。

这是我的电子表格的样子,其中有一个按钮(绘图)配置为在单击时运行 timeStamp() 函数:

screenshot

您还可以获得电子表格的副本 here .

到目前为止我得到的代码:

function timeStamp() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];

  var timezone = ss.getSpreadsheetTimeZone;
  var timeFormat = "hh:mm a";

  var lastCol = sheet.getLastColumn();
  var lastRow = sheet.getLastRow();
  var lastCell = sheet.getRange(lastRow, lastCol);
  var timeStampCell = sheet.getRange(lastRow, lastCol + 1);


  if(timeStampCell === " ") {
    var date = Utilities.formatDate(new Date(), timezone, timeFormat); 
    timeStampCell.setValue(date);
  };
}

最佳答案

var timeStampCell = sheet.getRange(lastRow, lastCol + 1);

...将 timeStampCell 设置为 Range 对象。

if(timeStampCell === " ") {

...将该 Range 对象与包含单个空格字符的 String 进行比较。比较始终为 false,因为类型不同。如果使用 == 与允许的类型强制进行比较,它仍然会计算 false,因为操作数只是不同。

您可能需要单元格的内容,并将它们与空字符串进行比较:

if(timeStampCell.getValue() === "")

注意:请小心使用 === 与电子表格单元格的内容。如果比较的是 Date 对象,则仅当两个操作数是完全相同的对象时,=== 才会计算 true。请参阅Which equals operator (== vs ===) should be used in JavaScript comparisons?

在此示例中,您并不真正关心电子表格中的数据类型是什么,只关心它是空白的。因此,您可以使用 ==

if(timeStampCell.getValue() == "")

另一个问题,在这里:

var timezone = ss.getSpreadsheetTimeZone;

这将获得对电子表格“getSpreadsheetTimeZone”方法的引用,但它不会告诉您时区。要获取该方法的结果,您需要通过包含括号来调用它:

var timezone = ss.getSpreadsheetTimeZone();

通过这两项更改,该脚本对我有用。

关于javascript - 单击按钮时电子表格功能不运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37930059/

相关文章:

Javascript 自动化 (OSA) Yosemite : privilege error for certain StandardAddition commands

javascript - 解析云代码 - 从指针数组中删除指针

javascript - 电子表格应用程序 : getRange and setValues

javascript - Google SpreadSheet 脚本 - 检查文件数量

git - 如何将 gdoc 的修订历史导出到 git?

javascript - 在 Javascript 中,为什么在构造函数上设置原型(prototype)会改变其实例上的 .constructor 值?

javascript - 显示 fancybox 加载图标

google-apps-script - 在 Gmail 插件中处理持久的特定于用户的值

google-apps-script - 未知函数: 'getFontColor'

xml - 从 Google 电子表格导出到 XML