亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將兩個提交的值與谷歌表格單元格匹配并基于該值返回 html 模板

如何將兩個提交的值與谷歌表格單元格匹配并基于該值返回 html 模板

MM們 2022-10-27 16:50:39
在下面的表格中:https://docs.google.com/spreadsheets/d/15aBW7eoddWj_AiA032pMuUk7_GvI-xG6siVF5wJuh8g/edit#gid=2104954217在 Sheet1 中:我在 C 列中有一些名稱,在 B 列中有它們的代碼和 Sheet2 用戶提交姓名和代碼的地方我需要將 Sheet2 中新提交的名稱與 Sheet1 中的名稱進行比較,每當我們匹配時,將新提交的代碼與 Sheet1 中的相關代碼進行比較;如果新提交的名稱與 Sheet1 中的任何名稱匹配,則繼續匹配其中的代碼;如果代碼與 Sheet1 中名稱旁邊的代碼匹配,則返回顯示已確認的 HTML 模板如果代碼與 Sheet1 中名稱旁邊的代碼不匹配,則返回顯示錯誤代碼的 HTML 模板如果名稱與 Sheet1 中的任何名稱都不匹配,則返回顯示錯誤名稱的 HTML 模板我試過下面的code.gs:function doGet() {  return HtmlService.createTemplateFromFile("Form.html")    .evaluate()    .setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);}function doPost(e) {  var lock = LockService.getScriptLock();  lock.tryLock(10 * 1000);  try {    var doc = SpreadsheetApp.getActiveSpreadsheet();    var sheet = doc.getSheetByName("Sheet2");    var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];    var nextRow = sheet.getLastRow() + 1;    var newRow = headers.map(function(header) {      return header === "Timestamp" ? new Date() : e.parameter[header];    });    sheet.getRange(nextRow, 1, 1, newRow.length).setValues([newRow]);    var name = newRow[3];    var code = newRow[2];    var sh = doc.getSheetByName("Sheet1");    var names = sh.getRange(2, 1, sh.getLastRow() - 1, 1).getValues();    for (var i = 0; i < names.length; i++) {      if (names[i] == name) {        var row = i;        var existingCode = sh.getRange(row, 2).getValue();        if (existingCode == code) {          return HtmlService.createTemplateFromFile("Confirmation.html")            .evaluate()            .setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);        } else {          return HtmlService.createTemplateFromFile("codeError.html")            .evaluate()            .setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);        }      }但它總是給出錯誤的名字。該工作表是可編輯的,因此請隨時使用它,并提前感謝您的幫助
查看完整描述

1 回答

?
寶慕林4294392

TA貢獻2021條經驗 獲得超8個贊

兩件事情:

  1. row[3]不存在 - D 列中的值由工作表中的數組公式填充 - 而不是您發布的值。此外,如果要比較名稱的小寫版本,則需要使用 Sheet1 中的 C 列而不是 A 列

  2. 如果您按照您的方式使用 for 循環 - 對于名稱與行條目不對應的每個循環迭代,您將遇到名稱錯誤情況,并且該else語句將直接調用“nameError.html”。

我建議您改用indexOf(),它不僅可以檢索工作表中存在的名稱,還可以返回位置 - 所以不需要循環。

樣本:

function doGet() {

  return HtmlService.createTemplateFromFile('Form.html').evaluate().setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);

}


function doPost (e) {

  var lock = LockService.getScriptLock();

  lock.tryLock(10 * 1000);  

  try {

    var doc = SpreadsheetApp.getActiveSpreadsheet();

    var sheet = doc.getSheetByName("Sheet2");

    var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]

    var nextRow = sheet.getLastRow() + 1

    var newRow = headers.map(function(header) {

      return header === 'Timestamp' ? new Date() : e.parameter[header]

    })

    sheet.getRange(nextRow, 1, 1, newRow.length).setValues([newRow])    

    var name = sheet.getRange(nextRow, 4).getValue();

    var code = newRow[2];    

    var sh = doc.getSheetByName("Sheet1");

    var names = sh.getRange(2, 3, sh.getLastRow()-1, 1).getValues();

    if (names.flat().indexOf(name) != -1) {     

      var existingCode = sh.getRange(names.flat().indexOf(name)+2, 2).getValue();

      if (existingCode == code){

        return HtmlService.createTemplateFromFile('Confirmation.html').evaluate()

        .setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);

      } else {

        return HtmlService.createTemplateFromFile('codeError.html').evaluate()

        .setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);

      }              

    }      

    else {

      return HtmlService.createTemplateFromFile('nameError.html').evaluate()

      .setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);

    } 

  }  

  catch (e) {

    return ContentService

    .createTextOutput(JSON.stringify({ 'result': 'error', 'error': e }))

    .setMimeType(ContentService.MimeType.JSON)

  }  

  finally { lock.releaseLock() }

}


查看完整回答
反對 回復 2022-10-27
  • 1 回答
  • 0 關注
  • 111 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號