我需要检索这个函数发送的数据,并将其显示在一个HTML表中
//Function to get All Patients List...
const getAllPatientsList = () => {
try {
const responseProcessorSheet = dataColSpreadSheet.getSheetByName('ReponsesProcessor');
if (responseProcessorSheet.getRange('A2').isBlank()) return;
const iDIndex = getColumnIndexFromName(responseProcessorSheet, 'ID');
const isCompleteIndex = getColumnIndexFromName(responseProcessorSheet, 'IsComplete');
const isApprovedIndex = getColumnIndexFromName(responseProcessorSheet, 'isApproved');
const isRejectedIndex = getColumnIndexFromName(responseProcessorSheet, 'isRejected');
const rejReasonsIndex = getColumnIndexFromName(responseProcessorSheet, 'RejectionReasons');
const isSheduledIndex = getColumnIndexFromName(responseProcessorSheet, 'IsScheduled');
const toBeReScheduledIndex = getColumnIndexFromName(responseProcessorSheet, 'ToBeReScheduled');
const dentalCodesIndex = getColumnIndexFromName(responseProcessorSheet, 'DentalCodes');
const surgeryDateIndex = getColumnIndexFromName(responseProcessorSheet, 'Surgery Date');
const referringOfficeNameIndex = getColumnIndexFromName(responseProcessorSheet, 'Referring Office Name');
const patientFirstNameIndex = getColumnIndexFromName(responseProcessorSheet, 'Patient First Name');
const patientLastNameIndex = getColumnIndexFromName(responseProcessorSheet, 'Patient Last Name');
const genderAtBirthIndex = getColumnIndexFromName(responseProcessorSheet, 'Gender at Birth');
const patientDateOfBirthIndex = getColumnIndexFromName(responseProcessorSheet, `Patient's Date of Birth`);
const wisdomTeethNumbersIndex = getColumnIndexFromName(responseProcessorSheet, `Wisdom Teeth Numbers to be Extracted`);
const otherTeethNumbersIndex = getColumnIndexFromName(responseProcessorSheet, 'Other Teeth Numbers to be Extracted');
const responsiblePartyFirstNameIndex = getColumnIndexFromName(responseProcessorSheet, `Responsible Party's First Name`);
const responsiblePartyLastNameIndex = getColumnIndexFromName(responseProcessorSheet, `Responsible Party's Last Name `);
const responsiblePartyPhoneNumberIndex = getColumnIndexFromName(responseProcessorSheet, `Responsible Party's Phone Number`);
const responsiblePartyEmailIndex = getColumnIndexFromName(responseProcessorSheet, `Responsible Party's Email`);
const patientXRayIndex = getColumnIndexFromName(responseProcessorSheet, `Patient X-Ray `);
const allPatientData = [];
const sheetValues = responseProcessorSheet.getRange(2, 1, responseProcessorSheet.getLastRow() - 1, responseProcessorSheet.getLastColumn()).getValues();
for (let data of sheetValues) {
if (data[iDIndex - 1] === '' || data[iDIndex - 1] === null) continue;
let temp = {};
temp['iD'] = data[iDIndex - 1];
temp['isComplete'] = data[isCompleteIndex - 1];
temp['isApproved'] = data[isApprovedIndex - 1];
temp['isRejected'] = data[isRejectedIndex - 1];
temp['rejReasons'] = data[rejReasonsIndex - 1];
temp['isSheduled'] = data[isSheduledIndex - 1];
temp['toBeReScheduled'] = data[toBeReScheduledIndex - 1];
temp['dentalCodes'] = data[dentalCodesIndex - 1];
temp['surgeryDate'] = data[surgeryDateIndex - 1];
temp['referringOfficeName'] = data[referringOfficeNameIndex - 1];
temp['patientFirstName'] = data[patientFirstNameIndex - 1];
temp['patientLastName'] = data[patientLastNameIndex - 1];
temp['genderAtBirth'] = data[genderAtBirthIndex - 1];
temp['patientDateOfBirth'] = data[patientDateOfBirthIndex - 1];
temp['wisdomTeethNumbers'] = data[wisdomTeethNumbersIndex - 1];
temp['otherTeethNumbers'] = data[otherTeethNumbersIndex - 1];
temp['responsiblePartyFirstName'] = data[responsiblePartyFirstNameIndex - 1];
temp['responsiblePartyLastName'] = data[responsiblePartyLastNameIndex - 1];
temp['responsiblePartyPhoneNumber'] = data[responsiblePartyPhoneNumberIndex - 1];
temp['responsiblePartyEmail'] = data[responsiblePartyEmailIndex - 1];
temp['patientXRay'] = data[patientXRayIndex - 1];
allPatientData.push(temp);
};
console.log("Patients récupérés :", allPatientData);
return allPatientData;
} catch (error) {
Logger.log(`getAllPatientsListError: ${error.message}`);
return `getAllPatientsListError: ${error.message}`;
};
};
服务器端数据以这种格式返回。我从服务器端日志里找到的。
[ { iD: 1683945240392,
isComplete: '',
isApproved: '',
isRejected: '',
rejReasons: '',
isSheduled: '',
toBeReScheduled: '',
dentalCodes: '',
surgeryDate: '',
referringOfficeName: 'Office 1',
patientFirstName: 'laura',
patientLastName: 'WAx',
genderAtBirth: 'Female',
patientDateOfBirth: Tue Jun 13 1995 00:00:00 GMT+0200 (Central European Summer Time),
wisdomTeethNumbers: 16,
otherTeethNumbers: '12,5,6',
responsiblePartyFirstName: 'Tom',
responsiblePartyLastName: 'Jerry',
responsiblePartyPhoneNumber: '+22996764654',
responsiblePartyEmail: 'blockchaindevxinxi@gmail.com',
patientXRay: 'https://drive.google.com/open?id=1NZKUpQ1uevK2QI26n-E4VWSvfju7aPvW' },
{ iD: 1683945737559,
isComplete: '',
isApproved: '',
isRejected: '',
rejReasons: '',
isSheduled: '',
toBeReScheduled: '',
dentalCodes: '',
surgeryDate: '',
referringOfficeName: 'Office2',
patientFirstName: 'ken',
patientLastName: 'Smith',
genderAtBirth: 'Male',
patientDateOfBirth: Thu Aug 08 1991 00:00:00 GMT+0200 (Central European Summer Time),
wisdomTeethNumbers: 'All 4 Wisdom Teeth (1, 16, 17, 32)',
otherTeethNumbers: '5,6',
responsiblePartyFirstName: 'Lebron',
responsiblePartyLastName: 'Jordan',
responsiblePartyPhoneNumber: 22996764654,
responsiblePartyEmail: 'blockchaindevxinxi@gmail.com',
patientXRay: 'https://drive.google.com/open?id=1I3Wsz6XA69f8h9JlAy3gZ8RcnfdAyHSO' } ]
我在navigatur端编写了这个函数,以便能够检索数据
document.addEventListener('DOMContentLoaded', function() {
init();
});
function init() {
console.log("Avant appel à google.script.run");
google.script.run.withSuccessHandler(displayPatients).getAllPatientsList();
}
function displayPatients(patients) {
var tableBody = document.querySelector('#data_table_all tbody');
tableBody.innerHTML = ''; // Efface les données précédentes du tableau (s'il y en a)
console.log(patients);
if (patients && patients.length) { // Vérifie que la variable patients est définie et contient des éléments
console.log("Longueur du tableau patients :", patients.length);
patients.forEach(function(patient) {
console.log("Patient en cours de traitement :", patient);
let row = document.createElement('tr');
let nameCell = document.createElement('td');
nameCell.textContent = patient.patientFirstName + ' ' + patient.patientLastName;
row.appendChild(nameCell);
console.log("Prénom du patient :", patient.patientFirstName);
var ageCell = document.createElement('td');
var birthDate = new Date(patient.patientDateOfBirth);
var today = new Date();
var age = today.getFullYear() - birthDate.getFullYear();
ageCell.textContent = age;
row.appendChild(ageCell);
var addressCell = document.createElement('td');
addressCell.textContent = patient.referringOfficeName;
row.appendChild(addressCell);
// ... Ajoutez d'autres cellules de données selon vos besoins
tableBody.appendChild(row);
});
} else {
// Si patients est null ou ne contient pas d'éléments, affichez un message d'erreur dans le tableau
var errorRow = document.createElement('tr');
var errorCell = document.createElement('td');
errorCell.colSpan = 3; // Étend la cellule sur trois colonnes pour occuper tout l'espace disponible
errorCell.textContent = 'Aucun patient trouvé';
errorRow.appendChild(errorCell);
tableBody.appendChild(errorRow);
}
}
getAllPatientsList()函数返回了一个没有被displayPatients()函数的参数接收到的对象,我得到了一个null,而不是你看到我的浏览器控制台,你能帮助我吗
1条答案
按热度按时间uubf1zoe1#
你做错了什么?
在代码的上下文中,您遇到了一个问题,即
getAllPatientsList()
函数返回的对象未被displayPatients()
函数的参数接收。问题是你试图返回一个不可接受的类型的数据到客户端。通过google.script.run
调用的函数对它们可以返回的内容有限制(例如,您应该避免Date
示例)。限制类型
目前,您不能返回(查看文档以了解限制的详细说明):
Date
示例;1.任何
Function
;<form>
);那我们能做什么?
要修复此问题,可以使用一种解决方法,分别使用JSON.stringify()和JSON.parse()序列化然后反序列化对象。通过这样做,您强制执行了一个常规的JavaScript序列化来避免这个问题。
你只需要做三个步骤
1.将
return allPatientData;
更改为return JSON.stringify(allPatientData);
1.将参数
function displayPatients(patients)
更改为function displayPatients(data)
1.在函数显示的顶部添加一行患者
var patients = JSON.parse(data);
下面是修复该问题的代码片段: