Google Apps 脚本 - 当包含行的新数据添加到 Sheet 1 时,将其移动到 Sheet 2 中的新行,然后清除 Sheet 1 中的数据
Google Apps Script - When a new data containing row is added to Sheet 1, move that to a new row in Sheet 2, then clear the data from Sheet 1
- Sheet 1 和 Sheet 2 中的第 1 行被冻结,并带有列名。
- 一旦我有一个工作脚本,我将设置一个相应的 onChange 触发器来执行该脚本。
- 由于将包含行的新数据添加到 Sheet1 的方式,脚本本身不能用 onChange/onEdit 语法编写,我只需要一个有效的函数,我将使用一个 onChange 触发器来执行它。
第 1 步:
Sheet 1 - 添加了包含行的新数据(第 2 行)。
A
B
C
1
City
State
Country
2
Los Angeles
CA
USA
Sheet 2 - 来自 Sheet 的数据 1 - 应将第 2 行复制到下一个可用行,在本例中为第 2 行。
A
B
C
1
City
State
Country
2
Los Angeles
CA
USA
第 2 步:
Sheet 1 - 将第 2 行的数据复制到 Sheet 2 中的下一个可用行后,应清除第 2 行。
A
B
C
1
City
State
Country
2
blank
blank
blank
第 3 步:
Sheet 1 - 添加了包含行的新数据(第 2 行)。
A
B
C
1
City
State
Country
2
Miami
FL
USA
Sheet 2 - 来自 Sheet 的数据 1 - 应将第 2 行复制到下一个可用行,在本例中为第 3 行。
A
B
C
1
City
State
Country
2
Los Angeles
CA
USA
3
Miami
FL
USA
第 4 步:
Sheet 1 - 将第 2 行的数据复制到 Sheet 2 中的下一个可用行后,应清除第 2 行。
A
B
C
1
City
State
Country
2
blank
blank
blank
...等等
- Sheet 1 应该只有两行。第 1 行用于列名,第 2 行开始时为空白,然后填充数据(然后应将其复制到 Sheet 2),然后清除以使其再次为空白,重复。
- Sheet 2 的行数应该一个接一个地持续增长,因为包含行的单个数据随着时间的推移填充到 Sheet 1 - 第 2 行并被复制。
- 填充 Sheet 1 - 第 2 行的传入数据来自外部应用程序,我从不手动向其中输入数据 sheet/row。传入数据一次性填满 Sheet 1 - 行 2 中的所有列。
尝试
function onOpen() {
SpreadsheetApp.getUi().createMenu('⇩ M E N U ⇩')
.addItem(' Transfer data form Sheet1 to Sheet2', 'moveData')
.addToUi();
}
function moveData() {
var ss = SpreadsheetApp.getActiveSpreadsheet()
var rng = ss.getSheetByName('Sheet1').getRange('A2:C2')
ss.getSheetByName('Sheet2').getRange(ss.getSheetByName('Sheet2').getLastRow()+1,1,1,3).setValues(rng.getValues())
rng.clearContent()
}
- Sheet 1 和 Sheet 2 中的第 1 行被冻结,并带有列名。
- 一旦我有一个工作脚本,我将设置一个相应的 onChange 触发器来执行该脚本。
- 由于将包含行的新数据添加到 Sheet1 的方式,脚本本身不能用 onChange/onEdit 语法编写,我只需要一个有效的函数,我将使用一个 onChange 触发器来执行它。
第 1 步:
Sheet 1 - 添加了包含行的新数据(第 2 行)。
A | B | C | |
---|---|---|---|
1 | City | State | Country |
2 | Los Angeles | CA | USA |
Sheet 2 - 来自 Sheet 的数据 1 - 应将第 2 行复制到下一个可用行,在本例中为第 2 行。
A | B | C | |
---|---|---|---|
1 | City | State | Country |
2 | Los Angeles | CA | USA |
第 2 步:
Sheet 1 - 将第 2 行的数据复制到 Sheet 2 中的下一个可用行后,应清除第 2 行。
A | B | C | |
---|---|---|---|
1 | City | State | Country |
2 | blank | blank | blank |
第 3 步:
Sheet 1 - 添加了包含行的新数据(第 2 行)。
A | B | C | |
---|---|---|---|
1 | City | State | Country |
2 | Miami | FL | USA |
Sheet 2 - 来自 Sheet 的数据 1 - 应将第 2 行复制到下一个可用行,在本例中为第 3 行。
A | B | C | |
---|---|---|---|
1 | City | State | Country |
2 | Los Angeles | CA | USA |
3 | Miami | FL | USA |
第 4 步:
Sheet 1 - 将第 2 行的数据复制到 Sheet 2 中的下一个可用行后,应清除第 2 行。
A | B | C | |
---|---|---|---|
1 | City | State | Country |
2 | blank | blank | blank |
...等等
- Sheet 1 应该只有两行。第 1 行用于列名,第 2 行开始时为空白,然后填充数据(然后应将其复制到 Sheet 2),然后清除以使其再次为空白,重复。
- Sheet 2 的行数应该一个接一个地持续增长,因为包含行的单个数据随着时间的推移填充到 Sheet 1 - 第 2 行并被复制。
- 填充 Sheet 1 - 第 2 行的传入数据来自外部应用程序,我从不手动向其中输入数据 sheet/row。传入数据一次性填满 Sheet 1 - 行 2 中的所有列。
尝试
function onOpen() {
SpreadsheetApp.getUi().createMenu('⇩ M E N U ⇩')
.addItem(' Transfer data form Sheet1 to Sheet2', 'moveData')
.addToUi();
}
function moveData() {
var ss = SpreadsheetApp.getActiveSpreadsheet()
var rng = ss.getSheetByName('Sheet1').getRange('A2:C2')
ss.getSheetByName('Sheet2').getRange(ss.getSheetByName('Sheet2').getLastRow()+1,1,1,3).setValues(rng.getValues())
rng.clearContent()
}