We are currently experiencing an issue with the Signature quotes not updating in real-time. Presently, the Signature updates are only reflected after reloading the page. Our goal is to achieve real-time updates without requiring a page reload. We want, when we open the compose email popup, it displays the latest Signature quotes without needing a page reload
Our sample code, Updating Signature quotes is this Code.gs file
async function startApp() {
let card = CardService.newCardBuilder();
let attribute = await getAttribute();
let att = attribute.data[0];
let ancer = att.attribute;
// card.addSection(CardService.newCardSection().addWidget(CardService.newTextParagraph().setText(ancer)));
let newsResult = await getUsedSignatures();
if (newsResult && newsResult.data.length > 0) {
let signatures = newsResult.data;
for (var i = 0; i < signatures.length; i++) {
var daySection
if (i === 0) {
daySection = CardService.newCardSection().setHeader("<b>Today</b>");
}
else if (i === 1) {
var daySection = CardService.newCardSection().setHeader("<b>Tomorrow</b>");
}
else {
daySection = CardService.newCardSection().setHeader(`<b>${signatures[i].used_date}</b>`);
}
let cleanedQuote = signatures[i].quote;
daySection.addWidget(CardService.newTextParagraph().setText(`<i style="color: #484643; font-family: 'Poppins', sans-serif;">${cleanedQuote}</i>`));
let switchFieldName = `toggle_switch_${signatures[i].id}`;
let defaultSwitchValue
if (signatures[i].toggle === "TRUE") {
defaultSwitchValue = true
}
else {
defaultSwitchValue = false
}
let switchDecoratedText = CardService.newDecoratedText()
.setText("")
.setWrapText(true)
.setSwitchControl(CardService.newSwitch()
.setFieldName("quote_select")
.setValue(switchFieldName)
.setSelected(defaultSwitchValue)
.setOnChangeAction(CardService.newAction()
.setFunctionName("handleToggleSwitchChange")
.setParameters({ switchName: switchFieldName })));
daySection.addWidget(switchDecoratedText)
card.addSection(daySection);
}
updateGmailSignature(signatures[0].quote, ancer, signatures[0].toggle);
} else {
card.addSection(CardService.newCardSection());
}
return card.build();
}
function updateGmailSignature(newSignature, ancer, switchFieldName) {
if (switchFieldName === "TRUE") {
let userEmail = Session.getActiveUser().getEmail();
let profileSignature = {
sendAsEmail: userEmail,
signature: `${newSignature}n${ancer}`
};
try {
let response = Gmail.Users.Settings.SendAs.patch(profileSignature, 'me', userEmail);
Logger.log(response);
Logger.log('Signature updated successfully.');
} catch (error) {
Logger.log('Error updating signature: ' + error);
}
} else {
// If the toggle is off, remove the signature
let userEmail = Session.getActiveUser().getEmail();
let profileSignature = {
sendAsEmail: userEmail,
signature: ''
};
// Use the Gmail API to update the signature
try {
let response = Gmail.Users.Settings.SendAs.patch(profileSignature, 'me', userEmail);
Logger.log(response);
Logger.log('Signature removed successfully.');
} catch (error) {
Logger.log('Error removing signature: ' + error);
}
}
}