0

我有两张纸的问题。一张是源电子表格,另一张是目标电子表格。源电子表格有一个源工作表,它是主数据库,而目标电子表格有一个目标,我们希望根据目标电子表格的“电子邮件”选项卡中提供的电子邮件从源工作表中获取数据。

我希望通过脚本而不是 IMPORTRANGE 或 QUERY 发生以下事情:

  • 目标电子表格将有多个副本,因此我想根据源电子表格的 id 将目标电子表格与源电子表格连接起来。

  • 我希望电子邮件匹配不区分大小写,以便目标电子表格的用户在任何情况下都可以键入电子邮件。

  • 电子邮件最多可以达到 50 条,或者假设获取该列的最后一行。

  • 如果脚本在获取数据后显示更新的弹出窗口,那就太好了。

  • 源表可能有多达 15000 行的数据,所以我也在考虑速度。

我已经共享了两个电子表格,其中包含指向其名称的超链接。我不是很擅长脚本,所以如果你可以在任何你喜欢的地方留下评论,那将会很有帮助。我真的很感激你的帮助。

提前致谢!编辑:我在这里更新我损坏的脚本:

function fetch() {
  //get the sheets
  var source_Ssheet = SpreadsheetApp.openById('19FkL3rsh5sxdujb6x00BUPvXEEhiXfAeURTeQi3YWzo');
  var target_Ssheet = SpreadsheetApp.getActiveSpreadsheet();

  //get the tabs
  var email_sheet = target_Ssheet.getSheetByName("Emails");
  var target_sheet = target_Ssheet.getSheetByName("Target Sheet");
  var source_sheet = source_Ssheet.getSheetByName("Source Sheet");

  //get ranges
  var email_list = email_sheet.getRange("B2:B");
  var target_sheet_range = target_sheet.getRange("A1:F100");
  var source_sheet_range = source_sheet.getRange("A1:F100");
  
  //get last rows
  var last_email_name = email_list.getLastRow();
  var last_target_sheet_range = target_sheet_range.getLastRow();
  var last_source_sheet_range = source_sheet_range.getLastRow();

  //start searching for emails
  for (var i=3; i < last_email_name.length+1; i++)
  {
    for(varj=3; j< last_source_sheet_range.length+1; j++ )
    {
        if(source_sheet_range[j][3].getValue() == email_list[i][3].getValue())
        {
          //copy matches to target sheet
          target_sheet.getRange((last_target_sheet_range + 1),1,1,10).setValues(master_sheet_range[j].getValues()); 
        }
        
    }
  }
}

4

0 回答 0