当前位置: 首页 > 知识库问答 >
问题:

如何使用另一张工作表中的新数据更新现有行?

洪通
2023-03-14

我有一个谷歌表单(这里的例子),有两张表单——表单和数据。我已经设置了表单表,以便可以手动输入条目,单击“更新”按钮后,数据将作为新行发送到数据表的底部,表单字段将被清除,为下一次输入做好准备。

我试图更进一步-如果单击UPDATE按钮,并且零件号字段包含一个已经存在于数据表的列A中的值(意味着它已经在某个时候输入),则不应该有新行已添加,但具有匹配零件号的现有行应改为使用新提交的数据进行更新,将任何字段保持在其先前值不变。

几年前,我已经在Excel中设置好了这个功能,并且工作得很好,但是谷歌工作表完全是一个新的游戏,我找不到任何关于如何使用谷歌工作表的有用信息。

以下是用于添加新数据的代码

function submitData() {
  var ss        = SpreadsheetApp.getActiveSpreadsheet();
  var formSS    = ss.getSheetByName("Form");
  var datasheet = ss.getSheetByName("Data");

  var values = [[formSS.getRange("B2").getValue(),
                 formSS.getRange("B3").getValue(),
                 formSS.getRange("B4").getValue(),
                 formSS.getRange("B5").getValue()]];

  datasheet.getRange(datasheet.getLastRow()+1, 1, 1, 4).setValues(values);

  formSS.getRange("B2").clearContent(),
  formSS.getRange("B3").clearContent(),
  formSS.getRange("B4").clearContent(),
  formSS.getRange("B5").clearContent();

}

如何更新此代码,使表单中提交的任何现有零件号更新数据表上的相应行,而不是作为新行输入?

共有1个答案

邵伟
2023-03-14

看看这是否有效

function submitData() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var formSS = ss.getSheetByName("Form");
var dataSheet = ss.getSheetByName("Data");

var values = formSS.getRange("B2:B5").getValues().reduce(function(a, b) {
    return a.concat(b)
});
var partNum = values[0];
var row;
dataSheet.getDataRange().getValues().forEach(function(r, i) {
    if (r[0] === partNum) {
        row = i + 1
    }
})
row = row ? row : dataSheet.getLastRow() + 1;
var data = dataSheet.getRange(row, 1, 1, 4).getValues()[0].map(function (el, ind){
  return el = values[ind] ? values[ind] : el;
  })
dataSheet.getRange(row, 1, 1, 4).setValues([data]);
formSS.getRange("B2:B5").clearContent()
}
 类似资料:
  • 我正在用一些初始数据绘制一个条形图,然后在单击按钮时尝试更新。我收到错误“未捕获的类型错误:无法读取未定义的属性'长度'”。单击更新后,将发生错误。如何解决此问题并启用更新功能以绘制新的条形图? D3代码:

  • 问题内容: 我有一张桌子,看起来像这样 我正在寻找一种方法,以使用“ VALUE”列中其他行中具有相同“ NAME”的数据更新值“ Test2”和“ Test”(此处ID并非唯一,ID的复合键和NAME成为唯一的一行)。例如,我正在寻找的输出是: 如果在另一个表中,我会没事的,但是我对于如何使用相同的NAME值引用当前表中的另一行感到困惑。 更新资料 修改完manji查询后,下面是我用于有效解决方

  • 如何使用Pandas更新/组合/合并数据帧(df1)和来自另一个数据帧(df2)的值,其中df1有一个新列(col3)和来自df2的值。可乐2?换句话说,df1是当前月份的值,我希望df1也有一个来自df2的列,它是上个月的值。 任何关于这方面的见解都是值得赞赏的;非常感谢你。 DF1: DF2: 所需df:

  • 问题内容: 表格1: 表2: 在oracle SQL中,如何运行 sql更新 查询,该查询可以使用表2并使用表2来更新表1 ?所以我得到的最终结果是 表格1: 问题答案: 这称为相关更新 假设联接导致键保留视图,您还可以

  • 我有一个目标表(已经填充了数据)和另一个(源表),我需要将数据检索到第一个。 目标_表格 source_table 我需要使用 tusers 表中的 id 更新 ttasks 表id_user列,因此 ttasks 的最终结果应该是: 我尝试过的(类似于INSERT… from…语句): 但是这个查询总是使用我的q1子查询中的第一个id。 关于我如何完成这项任务,有什么想法、帮助甚至解决方案吗?非

  • 问题内容: 我在SQLite中有两个表,看起来像这样 我试图编写查询以基于表Y中的记录更新表X上的记录。更新的条件如下所示 但是当我尝试这样做时,我收到一条错误消息,说 没有这样的列:table_y.c2 问题答案: 删除的答案关于错误的原因是正确的:必须在查询中 引入 关系标识符(例如,使用FROM / JOIN),然后才能使用它。 虽然SQLite的不 不 支持(因此没有办法直接引入查找关系)