You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google表单提交触发脚本执行但未写入数据的问题求助

Google表单提交触发脚本执行但未写入数据的问题求助

各位好,我现在碰到个棘手的问题:之前由同事创建的Google Sheets脚本,在他的账号被停用后就失效了。这些脚本原本运行正常,但现在只有我手动向表格录入数据时才能正常工作——如果是通过关联的Google Form提交数据,脚本要么执行日志显示“完成”但完全没写入数据,要么直接显示执行失败,结果都没法正常更新表格内容。

下面是其中一个出问题的脚本示例:

function updateColumnsBasedOnCondition() {
    // Replace 'YOUR_SHEET_ID' and 'SHEET_NAME' with your actual sheet ID and sheet name
    var sheet = SpreadsheetApp.openById('1Ew25yFrtVlejqGgO6LKpZFe4sjO3hQ4fdGHg7Xbcaag').getSheetByName('New 2024 QD+');

if (!sheet) {
    Logger.log("Sheet not found");
    return;
}

// Get the data range of the sheet
var range = sheet.getDataRange();

// Get all the values in the sheet as a 2D array
var values = range.getValues();

// Iterate through each row in the data
for (var i = 0; i < values.length; i++) {
    var cellOValue = values[i][14]; // Value in column O for the current row (assuming index 14 for column O)
    var cellPValue = values[i][15]; // Value in column P for the current row (assuming index 15 for column P)

    // Log the value of column O
    Logger.log('Row ' + (i + 1) + ' Column O value: ' + cellOValue);

    // Check if column O value equals 'Standard new DC order'
    if (cellOValue.toString().trim() === 'Standard new DC order') {
        // Log that the condition was met
        Logger.log('Condition met at row ' + (i + 1));

        // Update corresponding columns Q, R, S, V, W, X, Z (assuming indexes 16, 17, 18, 21, 22, 23, 26)
        sheet.getRange(i + 1, 17).setValue(250); // Column Q (index 16 + 1)

        if (cellPValue.toString().trim() === 'Pending State Petitions') {
            sheet.getRange(i + 1, 18).setValue(30); // Column R (index 17 + 1)
            sheet.getRange(i + 1, 19).setValue('Double-sided'); // Column S (index 18 + 1)
        } else if (cellPValue.toString().trim() === 'Passed States Petitions') {
            sheet.getRange(i + 1, 20).setValue(30); // Column T (index 19 + 1)
            sheet.getRange(i + 1, 21).setValue('Double-sided'); // Column U (index 20 + 1)
        }

        sheet.getRange(i + 1, 22).setValue(50); // Column V (index 21 + 1)
        sheet.getRange(i + 1, 23).setValue(25); // Column W (index 22 + 1)
        sheet.getRange(i + 1, 24).setValue(25); // Column X (index 23 + 1)
        sheet.getRange(i + 1, 26).setValue(25); // Column Z (index 25 + 1)

        // Log that the values were set
        Logger.log('Values set for row ' + (i + 1));
    }
}

// Flush the logs
Logger.log('Script completed.');
}

我已经尝试过以下排查步骤,但问题依然存在:

  1. 删除原有脚本后重新粘贴同事的原始代码
  2. 单独逐个测试每个脚本,排除多脚本冲突的可能
  3. 从零开始重写了一遍该脚本,确保没有语法或逻辑错误
  4. 检查并修复了脚本触发器的设置,确认触发器已启用
  5. 尝试了多种触发器类型:包括onedit、onformsubmit,以及直接触发updateColumnsBasedOnCondition函数

不管用哪种方式,要么执行日志显示“失败”,要么显示“完成”,但最终数据都没有被正确写入到表格对应的列中。有没有朋友遇到过类似的问题,或者能帮我看看哪里出了问题?

备注:内容来源于stack exchange,提问作者Cody

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 03:34:29