【发布时间】: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