google-apps-script - 将电子邮件地址从一张表移动到另一张表的脚本
问题描述
我在弄清楚如何编写以下脚本时遇到问题:
1. I have a sheet tab_A:
Col_A, Col_B
URL_1, Email_1
URL_2, Email_2
URL_3, Email_3
1. I have a sheet tab_B:
Col_A, ..., Col_F
URL_3, empty
URL_1, empty
URL_2, empty
“...”表示包含数据的几列。
我需要一个脚本,在 tab_A 中逐行复制电子邮件地址,在 tab_B 中找到正确的行(相同的 URL)并将电子邮件粘贴到 Col F 中。
任何帮助表示赞赏。
解决方案
我相信你的目标如下。
- 您想通过检查电子表格上的“tab_A”和“tab_B”的“A”列将“tab_A”的“B”列的值复制到“tab_B”的“F”列。
- 例如,当第 1
URL_1, Email_1
行在“tab_A”上,而第 2 行在URL_1
“tab_B”上时,您希望将 的值复制Email_1
到“tab_B”的“F”列与同一行。
为了实现您的目标,我想提出以下流程。
- 从“tab_A”中检索值并创建一个对象以搜索“A”列的值。
- 创建一个用于将值放入“tab_B”的数组。
- 将值放入“tab_B”。
示例脚本:
请将以下脚本复制并粘贴到电子表格的脚本编辑器中并运行myFunction
。通过这种方式,这些值被放入“tab_B”。在您使用它之前,请根据您的实际情况设置工作表名称。
function myFunction() {
// 1. Retrieve values from "tab_A" and create an object for searching the value of the column "A".
const ss = SpreadsheetApp.getActiveSpreadsheet();
const tabA = ss.getSheetByName("tab_A");
const sourceValues = tabA.getDataRange().getValues();
const obj = sourceValues.reduce((o, [a, b]) => Object.assign(o, {[a]: b}), {});
// 2. Create an array for putting values to "tab_B".
const tabB = ss.getSheetByName("tab_B");
const outputValues = tabB.getDataRange().getValues().map(r => [obj[r[0]] || ""]);
// 3. Put the values to "tab_B".
tabB.getRange(1, 6, outputValues.length, 1).setValues(outputValues);
}
笔记:
当您想使用上述脚本作为自定义函数时,您还可以使用以下脚本。在这种情况下,请将自定义公式放入
=SAMPLE(tab_A!A1:B, tab_B!A1:A)
“tab_B”的单元格“F1”中。function SAMPLE(valuesOfTabA, valuesOfTabB) { const obj = valuesOfTabA.reduce((o, [a, b]) => Object.assign(o, {[a]: b}), {}); return valuesOfTabB.map(r => [obj[r[0]] || ""]); }
参考:
推荐阅读
- html - 尝试通过相对路径链接我的 html 页面时出现问题
- python - 如何在 django 的视图中导入和使用 python 文件?
- c++ - 试图找到两个随机节点并将它们交换到双向链表中
- python - 使用 Groupy 库的 Groupme 机器人出现字符编码错误
- python - 根据数据框值获取列名和索引
- xcode - 如何在 SideMenu 库中运行示例?
- c# - WPF 从多个视图模型将选项卡项添加到选项卡控件
- java - 从一组字节数组重新创建文件
- sql - 如何为 SQL 中的每个 user_id 列值选择 10 个随机行(记录)?
- java - 您如何编写需要密码才能满足某些要求的单个方法?