Google Script会将之前的变量值传递给Google工作表

我正在使用Google表单 . 此表单将从用户收集数据,然后将其传递到Google表格中,以便从表单中用户输入的数据中创建特定格式的报告 .

由于报告具有特定格式,因此我必须复制模板以避免覆盖原始模板 .

我将面临问题,因为数据已输入Google表格 . Google Script正在输入变量“NewTempCopyName”的先前值 .

以下是代码:

function onSubmit(e) {

      var NewTempCopyName = Utilities.formatDate( new Date(),"GMT+1","ddMMyyyyhhmmss");
      Logger.log(NewTempCopyName);

      var tmpsheet = DriveApp.getFilesByName("Form2 Template").next();
      tmpsheet.makeCopy(NewTempCopyName);
      var fid = tmpsheet.getId();
      var ss =SpreadsheetApp.openById(fid);
      SpreadsheetApp.setActiveSpreadsheet(ss);
      var sheet = ss.getSheetByName("Sheet1");

      Logger.log(NewTempCopyName);
      SpreadsheetApp.getActiveSheet().getRange("B1").setValue(NewTempCopyName);
      Logger.log(NewTempCopyName);

    }

在上面的代码中,如果变量的先前值是18092018114846并且新值是18092018115332,则脚本在B1中传递18092018114846 .

Logger 在之前和之后记录正确的值:

SpreadsheetApp.getActiveSheet().getRange("B1").setValue(NewTempCopyName);

回答(1)

2 years ago

您正在设置 NewTempCopyName 一次,没有理由进行更改 . 即使它是基于DateTime,它也不会随时间更新 .

目前尚不清楚要在哪个工作表中设置B1的值 . 如果是副本,您需要进行以下更改:

var newCopy = tmpsheet.makeCopy(NewTempCopyName);
var fid = newCopy.getId();

如果没有,则会出现您的代码功能如上所述;你确定Logger列出第13行到第15行之间的不同值吗?