gpt4 book ai didi

google-app-maker - Google App Maker 如何从 Google 通讯录创建数据源

转载 作者:行者123 更新时间:2023-12-01 08:23:02 25 4
gpt4 key购买 nike

使用 GoogleAppMaker 如何从 google 联系人创建数据源。有一个员工 HR 示例应用,但我想类似地管理联系人(添加、修改、删除)并使用选择条件。

最佳答案

目前,此任务在应用制作工具中并非微不足道,而且非常通用。我们可以将问题措辞更改为 使用 3rd 方数据源的 CRUD 操作。让我们把它分解成更小的部分并分别解决它们。

读取/列出联系人

这项任务相对容易。您需要使用 Calculated Model代理Apps Scripts Contacts API回复。一旦您使用 Contact 中的字段子集创建模型,您可以为模型创建数据源并将其绑定(bind)到列表或表格小部件。您也可以尝试在 Calculated Model Sample 中寻找灵感。 .

Fields

Datasource

// Server side script
function getContacts_() {
var contacts = ContactsApp.getContacts();

var records = contacts.map(function(contact) {
var record = app.models.Contact.newRecord();

record.FirstName = contact.getGivenName();
record.LastName = contact.getFamilyName();

var companies = contact.getCompanies();

if (companies.length > 0) {
var company = companies[0];

record.Organization = company.getCompanyName();
record.Title = company.getJobTitle();
}

var emails = contact.getEmails();

if (emails.length > 0) {
record.Email = emails[0].getAddress();
}

var phones = contact.getPhones();

if (phones.length > 0) {
record.Phone = phones[0].getPhoneNumber();
}

return record;
});

return records;
}

创建/更新/删除

由于计算模型有一些 limitations ,我们需要打开我们的想象力从他们的数据源中创建、更新和删除记录。基本策略将是calling server side scripts CUD 操作以响应客户端上的用户操作。要从 UI 获取用户输入,我们需要使用页面的 Custom Properties ,每个联系人字段的一个属性: Custom properties

这里有一些应该解释这个想法的片段

创建

// Client script
function onSubmitContactClick(submitButton) {
var props = submitButton.root.properties;

var contact = {
FirstName: props.FirstName,
LastName: props.LastName,
Organization: props.Organization,
...
};

google.script.run
.withSuccessHandler(function() {
// Most likely we'll need to navigate user back to the
// page with contacts list and reload its datasource
// to reflect recent changes, because our `CUD` operations
// are fully detached from the list datasource
app.showPage(app.pages.Contacts);
app.datasources.Contacts.load();
})
.withFailureHandler(function() {
// TODO: Handle error
})
.createContact(contact);
}


// Server script
function createContact(contactDraft) {
var contact = ContactsApp.createContact(contactDraft.FirsName,
contactDraft.LastName,
contactDraft.Email);

contact.addCompany(contactDraft.Organization, contactDraft.Title);
contact.addPhone(ContactsApp.Field.WORK_PHONE, contactDraft.Phone);
}

更新

更新联系人记录的想法将与新的联系人创建流程非常相似,所以我现在跳过它。

删除

假设删除按钮位于联系人表格行内。

// Client script
function onDeleteContactClick(deleteButton) {
var email = deleteButton.datasource.item.Email;

google.script.run
.withSuccessHandler(function() {
// To update contacts list we can either reload the entire
// datasource or explicitly remove deleted item on the client.
// Second option will work way faster.
var contactIndex = deleteButton.parent.childIndex;
app.datasources.Contacts.items.splice(contactIndex, 1);
})
.withFailureHandler(function() {
// TODO: Handle error
})
.deleteContact(contact);
}


// Server script
function deleteContact(email) {
var contact = ContactsApp.getContact(email);
ContactsApp.deleteContact(contact);
}

关于google-app-maker - Google App Maker 如何从 Google 通讯录创建数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48287957/

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