Map 函数未从数组返回预期列(第三列)

问题描述 投票:0回答:1

我在使用过滤器和映射函数从数组中的第三列(从 Gsheet 获取)检索电子邮件地址时遇到问题。该调用正在日志中打印一个空数组。有人可以解释一下我做错了什么吗?

这是函数:

/**
 * Retrieves email addresses from a sheet based on selected names from a form.
 *
 * @param {object} e - Form submit event object.
 * @return {string} - A comma-separated string of email addresses.
 */
function getEmailAddresses(e) {
  // Get the responses from the form.
  const responses = e.response.getItemResponses();

  // Extract the selected names from the checkboxes.
  const eList = responses.find(item => item.getItem().getTitle() === 'E List').getResponse();

  // Get the spreadsheet and sheet.
  const ss = SpreadsheetApp.openById("SHEET_ID");
  const shet = ss.getSheetByName('ECI');

  const data = shet.getRange(2, 1, shet.getLastRow()-1, 3).getValues();

  // Logger.log(data);

  // Filter the data based on selected names and extract email addresses.
  // Assuming first name is in column 1 and last name in column 2
  // Assuming email is in column 3
  const emailAddresses = data.filter(row => eList.includes(`${row[0]} ${row[1]}`)).map(row => row[2]);
  Logger.log(emailAddresses);

  // Return the email addresses as a comma-separated string.
  return emailAddresses.join(',');
}
javascript arrays google-apps-script
1个回答
0
投票

假设您拥有的数据实际上与您在评论中提供的数据类似,这应该可以满足您的要求。

const data = [
  ['A', 'a', '[email protected]'],
  ['B', 'b', '[email protected]'],
  ['C', 'c', '[email protected]'],
  ['D', 'd']
];

const emailAddresses = data.map((listItem) => listItem[2] || false).filter(Boolean);

console.log('emailAddresses: ', emailAddresses);

© www.soinside.com 2019 - 2024. All rights reserved.