【问题标题】:Spreadsheets to calendar depending on the decision of an operator电子表格到日历取决于操作员的决定
【发布时间】:2026-02-02 12:25:02
【问题描述】:

您好,我正在制作一个脚本,该脚本从工作表中获取数据(从表单中接收数据)根据操作员的决定在我的主日历中创建一个事件。

它从 A 到 F 列中的表单接收数据。在 G 列中,操作员决定是“是”还是“否”。

如果 G 为“是”,则脚本会检查 H 列是否有任何内容。如果是空的 该脚本写入 H 列并使用 A: F 的数据创建一个事件, 如果没有在 H 列中写入任何内容,它只会传递到下一行,直到写入最后一行。

只有当整个 H 列为空时,我的脚本才能正常工作。这迫使我总是清除 H 列,并在每个新条目中重复已写入日历的事件。

如何在不清除 H 列的情况下让脚本继续运行?

我的脚本是:

function teste() {
var ss = SpreadsheetApp.getActive();
var dados = ss.getDataRange().getValues();
var ultimaLinha = ss.getLastRow() - 1;
var options = {
    description: dados[ultimaLinha][2],
    location: dados[ultimaLinha][5],
};
for (var i = 1; i < ultimaLinha + 1; i++) {
    var validacao = dados[i][6];
    var escrita = dados[i][7];
    if (validacao === "Yes") {
        if (escrita == null) {
            SpreadsheetApp.getActiveSheet().getRange(i + 1, 8).setValue('ok');
            var event = CalendarApp.getDefaultCalendar().createEvent(
                dados[i][1],
                new Date(dados[i][3]),
                new Date(dados[i][4]),
                options);
        }
    }
}

我的工作表

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

    当你getValues() 数据数组中的空单元格仍然存在时,它们只包含一个空字符串。将null 更改为""

    if (escrita == "") {
     ...  
    }
    

    【讨论】:

      【解决方案2】:

      如果我正确理解您的摘要,我认为您需要删除以下检查。

       if (escrita == null) {
      

      【讨论】:

      • 当我删除该行时,脚本会为之前已经处理过的事件创建重复事件