【问题标题】:Update function not working in Google Sheets AppScript更新功能在 Google 表格 AppScript 中不起作用
【发布时间】:2021-12-28 08:21:51
【问题描述】:

我的要求:

第 1 步:当单击搜索按钮时,使用“EnquiriesDB”表中的电话号码(在 B3 中)在单元格范围 C5:C15 中显示一个人的详细信息(此功能工作正常)

第 2 步:获取详细信息后,在 C5:C15 范围内编辑所需值并在“销售”表中的“B3”值与“EnquiriesDB”中 F 列的行匹配的情况下更新它床单。当单击更新按钮时,此更新应从“EnquiriesDB”表的 B 列开始。

下面是我使用的更新功能。当我单击更新按钮时,脚本运行成功,但“EnquiriesDB”表中没有反映任何更新。

 function updateData() {  
  var SPREADSHEET_NAME = "EnquiriesDB";  
  var SEARCH_COL_IDX = 0;  
  var RETURN_COL_IDX = 0;   
  var ss = SpreadsheetApp.getActiveSpreadsheet();  
  var formSS = ss.getSheetByName("Sales");  
  var datasheet = ss.getSheetByName("EnquiriesDB");
  var str = formSS.getRange("B3").getValue();  
  var values = ss.getSheetByName(SPREADSHEET_NAME).getDataRange().getValues();  
  for (var i = 0; i < values.length; i++) {    
    var row = values[i];    
    if (row[SEARCH_COL_IDX] == str) {     
      var INT_R = i+1      
      var values1 = [[formSS.getRange("C5").getValue(),        
                      formSS.getRange("C6").getValue(),                 
                      formSS.getRange("C7").getValue(),                 
                      formSS.getRange("C8").getValue(),                 
                      formSS.getRange("C9").getValue(),
                      formSS.getRange("C10").getValue(),
                      formSS.getRange("C11").getValue(),
                      formSS.getRange("C12").getValue(),
                      formSS.getRange("C13").getValue(),
                      formSS.getRange("C14").getValue(),
                      formSS.getRange("C15").getValue()]]; 
      datasheet.getRange(INT_R, 2, 1, 11).setValues(values1); 
      SpreadsheetApp.getUi().alert(' "Data Updated "');      
      return row[RETURN_COL_IDX];    
    }  
  }
}

我将名称从“abc”更改为“abcd”并单击更新按钮。但它没有更新“EnquiriesDB”表中的行。

有人可以帮我解决这个问题吗?

查询数据库表:

销售单:

【问题讨论】:

  • 如果你只需要使用数字从销售表中搜索数据,为什么需要使用脚本,你可以简单地使用谷歌表公式功能。如果不是这样,你能不能详细说明你的预期输出是什么?
  • 请忽略搜索按钮。我需要更新数据。更新按钮位于“C11”单元格下方。我错过了在屏幕截图中捕获它。
  • @AkashDev 你能解释一下你想用那个功能实现什么吗?
  • 嗨,埃梅尔。我已经详细说明了我的要求。请检查。
  • 要明确一点,您的 str 变量是从 Sales 表中提取的,而不是从 EnquiriesDB 中提取的,对吗?另外,如果EnquiriesDB 中的数字在F 列,你能解释一下row[SEARCH_COL_IDX] == str 背后的逻辑吗?如果您可以分享一些示例表会很有帮助,请记得对其进行消毒。

标签: google-sheets


【解决方案1】:

根据您的评论,以及显示表单字段和列顺序正确的可用屏幕截图。试试这个怎么样:-

function updateData()
{
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var formSS = ss.getSheetByName('Sales')
  var datasheet  = ss.getSheetByName('EnquiriesDB')
  var dataRange = formSS.getRange('C5:C11').getValues().map(function(r){return r[0]}); // getting values and changing it 1D array
  datasheet.appendRow([dataRange[0],dataRange[1],dataRange[2],dataRange[3],dataRange[4],dataRange[6]])
}

注意: appendRow() 获取最后一个空行并更新它。

资源:

appendRow()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多