this is my code
// Install the "Apps Script MQTT" library in the Apps Script editor.
// Follow these steps:
// 1. Click on the "+" icon in the left sidebar.
// 2. Search for "Apps Script MQTT" and click "Install."
// Use your MQTT broker information (e.g.,
test.mosquitto.org).
const MQTT_BROKER = "
broker.example.com";
const MQTT_PORT = 1883;
const MQTT_USERNAME = "your_mqtt_username";
const MQTT_PASSWORD = "your_mqtt_password";
// Subscribe to this MQTT topic to listen for messages from ESP32.
const MQTT_SUBSCRIBE_TOPIC = "esp32/fingerid";
// Define the Google Sheets database and records sheet names.
const DATABASE_ID ="";
const DATABASE_SHEET_NAME = "Database";
const RECORDS_SHEET_NAME = "Records";
function doPost(e) {
// Parse the incoming JSON data from ESP32.
var postData = JSON.parse(e.postData.contents);
var fingerid = postData.fingerid;
// Retrieve the current status from the database.
var database = SpreadsheetApp.openById(DATABASE_ID);
var sheet = database.getSheetByName(DATABASE_SHEET_NAME);
var data = sheet.getDataRange().getValues();
var stat;
for (var i = 0; i < data.length; i++) {
if (data[i][0] == fingerid) {
stat = data[i][4];
break;
}
}
// Toggle the status (IN to OUT or OUT to IN).
stat = stat === "IN" ? "OUT" : "IN";
// Update the status in the database.
for (var i = 0; i < data.length; i++) {
if (data[i][0] == fingerid) {
data[i][4] = stat;
break;
}
}
sheet.getRange(1, 1, data.length, data[0].length).setValues(data);
// Log the updated status.
console.log("Updated status for fingerid " + fingerid + " to " + stat);
// Publish the updated status back to ESP32 via MQTT.
var mqttClient = new MqttClient(MQTT_BROKER, MQTT_PORT, MQTT_USERNAME, MQTT_PASSWORD);
mqttClient.connect();
mqttClient.publish(MQTT_SUBSCRIBE_TOPIC, JSON.stringify({ fingerid: fingerid, status: stat }));
mqttClient.disconnect();
return ContentService.createTextOutput("Updated status: " + stat);
}