gpt4 book ai didi

javascript - 当数据已存在于 Google 表格中时的通知

转载 作者:行者123 更新时间:2023-12-03 20:39:33 25 4
gpt4 key购买 nike

我是应用程序脚本的初学者。我正在使用 Google 应用程序脚本制作一个网络应用程序,以将居民信息添加到 Google 表格中。添加居民的网络应用程序,但我希望应用程序通知我,如果电子表格中已存在具有相同门牌号和街道的记录。
使用电子表格的附加图像,如果在 Jalan Sanggul 4 街的 16 号门牌号输入不止一次,我希望收到通知。
我还附上了将数据添加到谷歌表的代码。
这可以通过引用用户名轻松实现,因为它们是唯一的,但在这种情况下,用户名仅在输入数据后生成。
验证只需要引用门牌号和街道。
我希望任何人都可以帮助我。
链接到我的网络应用程序 - https://script.google.com/macros/s/AKfycbwcuxcbp3VL6t-fjB3Jaf0T4FiCb5Oa_g08s6Nx_bDMIRpF7_cmnwJ-ivwDMWF-CeIFUg/exec
用户名:Mathavan
密码:苹果
链接到我的应用脚本代码 - https://script.google.com/d/1B9kBn4q5Hk2RsC_e3HutDeLCeHgyI-WmfHl8Mgtc5P4PN4VnnIYVY2GU/edit?usp=sharing

function appendData(values, spreadsheetId,range)
{
var valueRange=Sheets.newRowData();
valueRange.values=values;
var appendRequest=Sheets.newAppendCellsRequest();
appendRequest.sheetID=spreadsheetId;
appendRequest.rows=valueRange;
var results=Sheets.Spreadsheets.Values.append(valueRange,spreadsheetId, range,{valueInputOption: "RAW"});
}
enter image description here

最佳答案

根据我对代码的理解,形式 myForm in 表单.html 接收数据并使用函数handleFormSubmit(formObject)调用 processForm(formObject)在后端。processForm(formObject)然后要么更新数据(目前永远不会发生,因为表单不发送用户名)或附加一个新行,所以这可能是检查包含提交数据的行是否已经存在的地方。
由于您没有 ID,因此最好使用另一个函数而不是 checkID(ID) .类似以下内容将检查是否有任何行的门牌号和街道与提交的数据匹配(如果数据很多,这可能会变慢,因此请检查 this answer 以了解如何使其更快):

function isHouseRegistered(number, street) {
const houseNumberColumnIndex = 1;
const streetColumnIndex = 2;

// Get all house data in sheet
const sheetRows = SpreadsheetApp.openById(globalVariables().spreadsheetId).getRange(globalVariables().dataRange).getValues();

// Iterate through rows and return when the specified house is found
for (const row of sheetRows) {
if (row[houseNumberColumnIndex] == number && row[streetColumnIndex] === street) {
return true;
}
}

return false;
}
如果找到该行,您可以抛出异常,使其返回到 Web 应用程序的前端。像这样的东西:
function processForm(formObject){  
if(formObject.username && checkID(formObject.username)){//Execute if form passes an ID and if is an existing ID
updateData(getFormValues(formObject),globalVariables().spreadsheetId,getRangeByID(formObject.username)); // Update Data
} else if (isHouseRegistered(formObject.housenumber, formObject.street)) {
throw new Error("The specified house is already registered.");
} else { //Execute if form does not pass an ID
appendData(getFormValues(formObject), globalVariables().spreadsheetId, globalVariables().insertRange); //Append Form Data
}
return getLastTenRows();//Return last 10 rows
}
然后,在前端,您需要更改 handleFormSubmit(formObject)包含 failure handler 的函数并实现向用户显示消息的功能。例如:
function handleFormSubmit(formObject) {
google.script.run.withSuccessHandler(createTable).withFailureHandler(showErrorMessage).processForm(formObject);
document.getElementById("myForm").reset();
}

function showErrorMessage(error) {
alert(error.message);
}
上面的代码未经测试,因此可能需要进行一些更改。

关于javascript - 当数据已存在于 Google 表格中时的通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67698669/

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