Google app maker 如何浏览到Google AppMaker中加载到表中的数据源中的下一页
我正在处理一个名为“emailSearchResults”的数据源的需求,在该数据源中搜索电子邮件元数据并将结果加载到数据源中 数据源中的字段不相关,但是我根据下面的屏幕截图将数据源设置为每页有50条记录: 用于加载数据源的脚本显示在查询字段中,该字段调用以下脚本:Google app maker 如何浏览到Google AppMaker中加载到表中的数据源中的下一页,google-app-maker,Google App Maker,我正在处理一个名为“emailSearchResults”的数据源的需求,在该数据源中搜索电子邮件元数据并将结果加载到数据源中 数据源中的字段不相关,但是我根据下面的屏幕截图将数据源设置为每页有50条记录: 用于加载数据源的脚本显示在查询字段中,该字段调用以下脚本: function getMessageDetails(userId, msgID) { var messageDetails = []; var messageData; var msgID_,subject_,fro
function getMessageDetails(userId, msgID)
{
var messageDetails = [];
var messageData;
var msgID_,subject_,from_,date_;
messageData=Gmail.Users.Messages.get(userId,msgID,{format:"metadata", metadataHeaders:["Message-ID", "Subject", "From", "Date"]});
console.log(messageData.payload.headers);
//console.log(msgID);
//console.log(messageData.payload.headers[3].value);
date_="<na>";
from_="<na>";
subject_="<na>";
msgID_="<na>";
for (var counter =0;counter<4;counter++)
{
if (messageData.payload.headers[counter].name=="Message-ID")
{
msgID_=messageData.payload.headers[counter].value;
}
if (messageData.payload.headers[counter].name=="Subject")
{
subject_=messageData.payload.headers[counter].value;
}
if (messageData.payload.headers[counter].name=="From")
{
from_=messageData.payload.headers[counter].value;
}
if (messageData.payload.headers[counter].name=="Date")
{
date_=messageData.payload.headers[counter].value;
}
}
messageDetails.push(date_);
messageDetails.push(from_);
messageDetails.push(subject_);
messageDetails.push(msgID_);
return messageDetails;
}
function searchMessages(userId,condition)
{
//
// first we build the conditions
// we can make it fixed
// or we can make it dynamic
var searchResult;
var deleteResult;
var currentMessage;
var results = [];
var pageToken;
var params = {};
var _stat;
var options = {
includeSpamTrash: "true",
pageToken: pageToken
};
var msgRecord = [];
do
{
searchResult=Gmail.Users.Messages.list(userId,options);
for (var i = 0; i < searchResult.messages.length; i++)
{
var record=app.models.emailSearchResults.newRecord();
msgRecord=getMessageDetails(userId,searchResult.messages[i].id);
record.msgMainID=searchResult.messages[i].id;
record.msgID=msgRecord[3];
record.subject=msgRecord[2];
record.senderAddress=msgRecord[1];
record.msgDate=msgRecord[0];
/*console.log(searchResult.messages[i].id);
console.log(msgRecord[3]);
console.log(msgRecord[2]);
console.log(msgRecord[1]);
console.log(msgRecord[0]);
return;*/
results.push(record);
msgRecord=null;
}
if (searchResult.nextPageToken) {
options.pageToken = searchResult.nextPageToken;
}
} while (searchResult.pageToken);
searchResult=null;
return results;
}
函数getMessageDetails(userId,msgID)
{
var messageDetails=[];
var消息数据;
var msgID,subject,from,date;
messageData=Gmail.Users.Messages.get(userId,msgID,{format:“metadata”,metadataHeaders:[“messageid”,“Subject”,“From”,“Date”]});
log(messageData.payload.headers);
//console.log(msgID);
//log(messageData.payload.headers[3].value);
日期=”;
来自=”“;
主题=”“;
msgID_uquo;;
对于(var counter=0;counter,当前分页在计算数据源中无法按预期工作。但是,您可以构建自己的分页。要实现这一点,您需要进行几项更改。首先,您需要将searchMessages函数重构为类似以下内容:
function searchMessages(userId, pageToken){
var results = [];
var options = {
includeSpamTrash: "true",
pageToken: pageToken,
maxResults: 50
};
var searchResult = Gmail.Users.Messages.list(userId, options);
for (var i = 0; i < searchResult.messages.length; i++){
var record = app.models.emailSearchResults.newRecord();
var msgRecord = getMessageDetails(userId,searchResult.messages[i].id);
record.msgMainID = searchResult.messages[i].id;
record.msgID = msgRecord[3];
record.subject = msgRecord[2];
record.senderAddress = msgRecord[1];
record.msgDate = msgRecord[0];
results.push(record);
}
return {records: results, nextPageToken: searchResult.nextPageToken};
}
您需要修改分页小部件的各种属性。以下是上一个/下一个单击功能:
以前的:
widget.datasource.query.pageIndex--;
widget.datasource.query.parameters.page = widget.datasource.query.pageIndex;
widget.datasource.load();
下一步:
您应该可以从那里开始。在计算数据源上的分页出现问题,我猜您的数据源是这样的。这可能还没有得到修复。您可能希望查看是否有针对此问题的错误提交并启动它,或者如果没有提交错误报告,请继续并提交一个。Hi@MarkusMalessa,是的,这是一个计算过的数据源,我会检查关于这一点的错误报告。但根据下面App Maker团队的回复,这可能是正常行为?他们在下面提出的修改实际上对我创建的数据源非常有效。进一步检查后,我同意@MarkusMalessa,似乎这是很可能是一个bug。这很好,非常感谢您的帮助。它按照说明工作……我必须调整分页小部件中的一些内容,但它确实按照我的预期工作。它工作正常,就像@Bluescrod在评论中说的,我必须调整上一个/下一个按钮的可见性以及禁用它们的定义。@Bluescrod您是怎么做到的最终禁用“下一页”按钮在客户端?@jorgachacon如果我正确理解了流程,那么每次单击next/prev按钮时,数据源都会加载查询的下一页。我还没有做过这方面的工作,因为我想得到一个完全可以工作的模型来完成我想做的事情,然后我将为next/p进行适当的可见性设置rev按钮。但是,我相信我可以定制一个条件来查看pageToken/页码,或者定制一个计数器来控制这两个按钮的可见性…只是粗略的想法还是真的,我需要尽快开始工作!@jorgechacon为了让我自己暂时开始工作,我更改了ne的可见性设置xt/prev按钮将绑定形式设置为显式值,我将两个按钮的绑定设置为enabled(已启用)。我还将整个寻呼机小部件的可见性设置更改为explicit visible(显式可见)。当我达到最大页数时,我仍然可以单击next/prev,页码将以错误的值更新。我必须解决此问题不过,这在之前的评论中解释过。
widget.datasource.query.pageIndex--;
widget.datasource.query.parameters.page = widget.datasource.query.pageIndex;
widget.datasource.load();
widget.datasource.query.pageIndex++;
widget.datasource.query.parameters.page = widget.datasource.query.pageIndex;
widget.datasource.load();