簡體   English   中英

編輯來自谷歌 forms 的響應后獲取創建和修改日期

[英]Get created and modified date after editing response from google forms

function assignEditUrls() {
    var form = FormApp.openById('Your form key goes here');
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Your responses Google Sheet name goes here - The tab name, not the file name');
    var data = sheet.getDataRange().getValues();
    var urlCol = Column number where URLs get entered goes here;
    var responses = form.getResponses();
    var timestamps = [],
        urls = [],
        resultUrls = [];
    for (var i = 0; i < responses.length; i++) {
        timestamps.push(responses[i].getTimestamp().setMilliseconds(0));
        urls.push(responses[i].getEditResponseUrl());
    }
    for (var j = 1; j < data.length; j++) {
        resultUrls.push([data[j][0] ? urls[timestamps.indexOf(data[j][0].setMilliseconds(0))] : '']);
    }
    sheet.getRange(2, urlCol, resultUrls.length).setValues(resultUrls);
}

我目前正在使用此代碼,它允許我更新正在生成編輯鏈接以編輯相應記錄的記錄。 但挑戰在於它也改變了時間戳。

問題是

我們如何修改此代碼,以便我可以為谷歌表中的特定記錄創建和上次修改日期和時間?

非常感謝任何幫助。 非常感謝。

您可以創建一個 onFormSubmit 觸發器,以在添加新記錄時保存行的創建日期。 通過使用這種方法,我們可以輕松存儲創建日期修改日期(時間戳),您可以將其用於其他操作。

例子:

這里我更新了測試數據1的email:

前: 在此處輸入圖像描述

后: 在此處輸入圖像描述

代碼:

function assignEditUrls() {
    var form = FormApp.openById('Enter form id here');
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form Responses 1');
    var data = sheet.getDataRange().getValues();
    var urlCol = 9;
    var responses = form.getResponses();
    var urls = [];
    for (var i = 0; i < responses.length; i++) {
      urls.push([responses[i].getEditResponseUrl()]);
    }
    sheet.getRange(2, urlCol, urls.length).setValues(urls);
}


function triggerTest(e){
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form Responses 1');
  var createdDateCol = 8;
  var row = e.range.getRow();
  sheet.getRange(1, createdDateCol, 1, 1).setValue("Created Date"); // Add created date header
  var cdRange = sheet.getRange(row, createdDateCol, 1, 1);
  if(cdRange.getValue() == ''){ // this indicates that the record is new
     cdRange.setValue(e.namedValues['Timestamp'])
  }
}

參考:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM