Google app maker 设置/修改与客户端脚本的记录关联

Google app maker 设置/修改与客户端脚本的记录关联,google-app-maker,Google App Maker,我正在使用以下数据模型构建文档管理应用程序: 文档元数据 -批准申请 -工作流程阶段 -批准人 -评论 我尝试使用文档审批工作流模板作为起点,并将Doc_元数据父级与“Requests”模型相关联,以便每个审批请求都与父级元数据记录相关联(归其所有) 我已经让它从头到尾工作,没有抛出任何错误,但是,无论我做什么,我都无法保存元数据-请求关系 我已经在下面的“添加请求”页面上发布了我的客户端脚本,并附上了我的应用程序的zip,以防有人想查看更多细节 我非常感谢所有的建议,我喜欢appmaker

我正在使用以下数据模型构建文档管理应用程序:

  • 文档元数据 -批准申请 -工作流程阶段 -批准人 -评论
我尝试使用文档审批工作流模板作为起点,并将Doc_元数据父级与“Requests”模型相关联,以便每个审批请求都与父级元数据记录相关联(归其所有)

我已经让它从头到尾工作,没有抛出任何错误,但是,无论我做什么,我都无法保存元数据-请求关系

我已经在下面的“添加请求”页面上发布了我的客户端脚本,并附上了我的应用程序的zip,以防有人想查看更多细节

我非常感谢所有的建议,我喜欢appmaker的想法,但一直在努力理解它们与SQL传统处理方式之间的关系

    /**
 * @fileoverview Client script functions for AddRequest page.
 */


/**
 * Navigates user to the add request page and sets page URL parameters.
 * @param {string=} metadataKey - optional metadata with this key will be used
 *     as default for the new approval request.
 */
function gotoAddRequestPage(metadataKey) {
  var params = {
    metadataKey: metadataKey
  };
// DEBUG
    console.log(params.metadataKey);
    console.log(metadataKey);

  gotoPage(app.pages.AddRequest, params);
}


/**
 * Creates a new request and redirects user to the edit screen afterwards.
 * @param {Widget} submitButton - button that triggers the action.
 */
function createRequest(submitButton) {
  var addRequestPage = submitButton.root;

  if (addRequestPage.validate()) { 
    submitButton.enabled = false;


    submitButton.datasource.saveChanges({
      success: function() {
        submitButton.enabled = true;

     //DEBUG
        console.log("requestId:" + submitButton.datasource.item._key);

        goToRequestDetailsPage(submitButton.datasource.item._key);
      },
      failure: function(error) {
        submitButton.enabled = true;
      }
    });
  }
}



/**
 * Creates a new request and redirects user to the edit screen afterwards.
 * @param {Widget} cancelButton - button that triggers the action.
 */
function cancelCreateRequest(cancelButton) {
  cancelButton.datasource.clearChanges();
  app.showPage(app.pages.Main);
}

function onRequestCreate () {
  google.script.url.getLocation(function(location) {
    var metadataKey = location.parameter.metadataKey;
    var props = {
    metadataKey: metadataKey
    };
    var allMetadataDs = app.datasources.AllMetadata;
    var metadataDs = allMetadataDs.item;
    var requestDs = app.datasources.RequestsByKey;

    //DERBUG//
    console.log("metadataKey: " + metadataKey);

    var newRequest = requestDs.createItem();
    newRequest.Metadata = metadataDs;

    var requests = metadataDs.Request;

    requests.push(newRequest);
  });
}
努力理解关系与传统SQL处理关系的方式

您可以将应用程序配置为使用云SQL数据库:

我无法获取要保存的元数据-请求关系

下面是一个应该可以工作的代码段(假设您在自动保存模式下使用datasource)

var allMetadataDs=app.datasources.AllMetadata;
//此时应选择所需的元数据记录
var metadata=allMetadataDs.item;
var requestDs=app.datasources.RequestsByKey.modes.create;
var requestDraft=requestDs.item;
//此行应在草稿请求记录和
//现有元数据记录。
requestDraft.Metadata=元数据;
//将草稿发送到服务器以保存
createItem(函数(newRecord){
//异步记录持久化请求记录
console.log(newRecord);
});
顺便说一下,如果您在请求创建表单中添加一个包含元数据项的下拉列表,您的生活将变得更加轻松