gpt4 book ai didi

javascript - 根据单元格值将行移动到其他工作表

转载 作者:行者123 更新时间:2023-12-01 01:00:47 24 4
gpt4 key购买 nike

我有一张工作表,其中的行我想根据单元格值移动到另一张工作表。我尝试遵循这篇文章的解决方案(请参阅下文),但我在编辑脚本以实现我想要的功能时遇到问题。

我正在为一个事件签到。我希望能够更改 F 列中的值,用状态更改的时间填充 G 列,并将行数据迁移到“参加者到达”表。

我相信脚本已经做到了这一点,但必须手动运行它。它还负责在将 A(事件)中的行数据迁移到 B(与会者到达)后将其删除。

我的问题是有人可以帮我设置它以便脚本连续运行(在编辑时),并且如果我错过了某些内容也可以完成上述所有操作吗?

我不相信脚本在运行时会遵循下拉格式,所以我愿意手动输入一些内容。如果它能保持这种状态那就太酷了——让事情变得更容易。

这是我正在测试的工作表。

https://docs.google.com/spreadsheets/d/1HrFnV2gFKj1vkw_UpJN4tstHVPK6Y8XhHCIyna9TLJg/edit#gid=1517587380

这是我尝试遵循的解决方案。这一切都归功于 Jason P 和 Ritz。

Google App Script - Google Spreadsheets Move Row based on cell value efficiently

谢谢D:

 function CheckIn() {

// How Many Columns over to copy
var columsCopyCount = 7; // A=1 B=2 C=3 ....

// What Column to Monitor
var columnsToMonitor = 6; // A=1 B=2 C=3 ....

//TARGET SPREAD SHEETS
var target1 = "Attendee Arrived";

//Target Value
var cellvalue = "Attendee Arrived";


//SOURCE SPREAD SHEET
var ss = SpreadsheetApp.openById('1HrFnV2gFKj1vkw_UpJN4tstHVPK6Y8XhHCIyna9TLJg');
var sourceSpreadSheetSheetID = ss.getSheetByName("Event");
var sourceSpreadSheetSheetID1 = ss.getSheetByName(target1);


var data = sourceSpreadSheetSheetID.getRange(2, 1, sourceSpreadSheetSheetID.getLastRow() - 1, sourceSpreadSheetSheetID.getLastColumn()).getValues();

var attendee = [];


for (var i = 0; i < data.length; i++) {

var rValue = data[i][6];

if (rValue == cellvalue) {
attendee.push(data[i]);
} else { //Fail Safe
attendee.push(data[i]);
}
}

if(attendee.length > 0){

sourceSpreadSheetSheetID1.getRange(sourceSpreadSheetSheetID1.getLastRow() + 1,
1, attendee.length, attendee[0].length).setValues(attendee);
}


//Will delete the rows of importdata once the data is copided to other
sheets
sourceSpreadSheetSheetID.deleteRows(2,
sourceSpreadSheetSheetID.getLastRow() - 1);
}

最佳答案

试试这个:

我想您已经知道您需要一个可安装的 onEdit 触发器,并且您无法通过在没有事件对象的情况下运行它来测试这种性质的函数。

function checkIn(e) {
var sh=e.range.getSheet();
if(sh.getName()!="Event") return;
if(e.range.columnStart==6) {
if(e.value=="Attendee Arrived"){
e.range.offset(0,1).setValue(Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "M/d/yyyy HH:mm:ss"));
var row=sh.getRange(e.range.rowStart,1,1,sh.getLastColumn()).getValues()[0];
e.source.getSheetByName("Attendee Arrived").appendRow(row);
sh.deleteRow(e.range.rowStart);
}
}
}

关于javascript - 根据单元格值将行移动到其他工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56102610/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com