Javascript 根据下拉列表的值从单元格中提取数据

Javascript 根据下拉列表的值从单元格中提取数据,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我在Google sheet中有一个工作表,它根据下拉单元格的值更改某些单元格的值 从谷歌应用程序脚本如何在不更改下拉列表值的情况下访问这些值(因为在下拉单元格上使用setValue(“xxx”),将更改工作表中的所有值) 例如: 在这张表中,我们的想法是在不改变下拉列表中的值的情况下获得C的年龄,并且不要查看表中的直接值(因为实际示例通过了许多公式)。很抱歉延迟。下面是一个在您提供的示例中起作用的函数。它基于A列和B列构建一个object/dict/hash表(无论您想叫它什么),然后您可以轻

我在Google sheet中有一个工作表,它根据下拉单元格的值更改某些单元格的值

谷歌应用程序脚本如何在不更改下拉列表值的情况下访问这些值(因为在下拉单元格上使用
setValue(“xxx”)
,将更改工作表中的所有值)

例如:


在这张表中,我们的想法是在不改变下拉列表中的值的情况下获得C的年龄,并且不要查看表中的直接值(因为实际示例通过了许多公式)。

很抱歉延迟。下面是一个在您提供的示例中起作用的函数。它基于A列和B列构建一个object/dict/hash表(无论您想叫它什么),然后您可以轻松地选择所需的值

function myFunction(person) {
  let vals = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange("A2:B").getValues();
  
  vals = vals.filter(val => val[0] !== "");   // get rid of empty rows
  console.log(vals);
  let dict = vals.reduce((acc, val)=> {acc[val[0]] = val[1]; return acc}, {})
  console.log(dict);
  return dict[person]
}

谢谢你的回答。但这对我不起作用。我得到了一个[[Y]](只有一个值,而不是可能的值列表)更具体地说:我试图得到一个单元格应有的值,如果下拉列表有一个X值。单元格值由公式
=INDEX('Sheet 1'!A1:A;EQUIV(A2;'Sheet 1'!AK1:AK;0);1)
提供下拉列表的候选值?否。如果下拉列表具有X值,则仅显示单元格的值。例如:单元格“B1”是包含3个可能值(A、B、C)的下拉列表。单元格“B2”是年龄根据“B1”中的选择而变化的单元格。我如何在不做sheet.getRange(“B1”).setValue(“C”)的情况下得到C的年龄,因为这会修改表格。请给出一个具体的例子,我看看我是否能帮上忙。我创建了这个示例表格,想法是在不更改下拉列表中的值的情况下得到C的年龄,不要去看表中的直接值(因为真实的例子传递了很多公式)。我认为这可以通过使用DataValidator实现,但我不确定,谢谢你的回答,但我认为这不是一个好的解决方案,因为你直接从表中索引,在我使用的实际情况中,有很多公式,包括图表,取决于用户。目前我正在使用(在示例中):
var sheet=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();表3.getRange(“E3”).setValue(“C”);返回表.getRange(“F3”).getValue()您没有在提示中或在您提供的示例数据中声明这一点。我不知道你还想要什么。
function myFunction(person) {
  let vals = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange("A2:B").getValues();
  
  vals = vals.filter(val => val[0] !== "");   // get rid of empty rows
  console.log(vals);
  let dict = vals.reduce((acc, val)=> {acc[val[0]] = val[1]; return acc}, {})
  console.log(dict);
  return dict[person]
}