关于多维表格的两个问题求教
设置一个住宿情况一览表,这个表有个对应的收集表单,怎么实现收集表单录入信息后,自动从住宿情况一览表里查找对应的人,修改相关的信息,而不是重新填加一行新的内容。
在住宿一览表里,每个宿舍4个人,每个宿舍设置一个宿舍长,这个地方使用选项选择,三个否,一个是。怎么实现在有一个是的情况下,宿舍其他人不能选择是,只能选择否,如果更换宿舍长,需要先把原来的变成否,在选择是。之前写了一个脚本,运行成功,但是选择是或者否没有任何反应,还是可以随便选择。
请各位大神帮忙指点一下,谢谢!
function main() {
try {
const event = $event;
const modifiedRecord = event.record;
// 调试日志 - 实际环境中可删除
console.log("触发事件:", JSON.stringify(event));
// 只处理"是否是宿舍长"字段被修改的情况
if (!event.modifiedFields || !event.modifiedFields.includes("是否是宿舍长")) {
console.log("未修改宿舍长字段,跳过检查");
return;
}
const dorm = modifiedRecord.fields["楼栋宿舍号"];
const isLeader = modifiedRecord.fields["是否是宿舍长"] === "是";
// 只检查设置为宿舍长且有宿舍号的情况
if (!isLeader || !dorm) {
console.log("未设置为宿舍长或无宿舍号,跳过检查");
return;
}
// 获取当前表的所有记录
const sheetId = modifiedRecord.sheetId;
const allRecords = Application.Record.GetRecords({
SheetId: sheetId
});
// 查找同一宿舍的其他宿舍长
const otherLeaders = allRecords.records.filter(record =>
record._id !== modifiedRecord._id &&
record.fields["楼栋宿舍号"] === dorm &&
record.fields["是否是宿舍长"] === "是"
);
// 如果存在其他宿舍长,阻止保存并提示
if (otherLeaders.length > 0) {
const leaderNames = otherLeaders.map(r => r.fields["姓名"]).join(", ");
const errorMsg = `宿舍 ${dorm} 已有宿舍长: ${leaderNames}。请先将他们的宿舍长设为"否",再设置当前记录。`;
console.error(errorMsg);
throw new Error(errorMsg);
}
console.log("宿舍长检查通过");
} catch (error) {
console.error("脚本执行错误:", error.message);
throw error; // 重新抛出以确保WPS显示错误
}
}