【问题标题】:Import XLS/Rows Copy: How to display contact name in a Contact Column?导入 XLS/行副本:如何在联系人列中显示联系人姓名?
【发布时间】:2018-10-18 23:33:35
【问题描述】:

看到 smartsheet SDK 的 1.3.3 版以及直接从 SDK 导入 XLS 文件的能力(我还没有尝试过),我开始思考如何实现上传超大文件的目标具有最少请求数的工作表。 (见相关问题:Building whole sheet programmatically with Python SDKHow to create a project sheet via the python SDK

我目前的测试方法是导入一个 XLS 文件(虽然到目前为止是 UI),但该文件的格式不正确(尝试制作带有甘特图视图和资源管理的项目表)。

使用 python SDK,我使用Sheets.copy_rows() 方法将行从在 UI 中导入的工作表复制到另一个按照我的项目工作表模板创建的空白工作表。

这似乎工作得很好,除了联系人列,我想在其中显示联系人姓名而不是联系人电子邮件地址。

根据https://smartsheet-platform.github.io/api-docs/?python#contact-list-columns

在为联系人列表列创建或更新单元格时, displayValue 属性的作用如下:

  • 如果 displayValue 为非 null 且非空,Smartsheet 单元格将显示提供的值。
  • 如果 displayValue 为空字符串,Smartsheet 单元格将显示电子邮件地址。
  • 如果 displayValue 为 null 或不存在,Smartsheet 会根据电子邮件使用联系人姓名进行最佳猜测 地址。

查看我通过导入创建的工作表,我可以看到我的单元格数据为:{"columnId": 7027801426552708, "value": "eleroy@******.com"}

根据上面的文档,由于 displayValue 不存在,我希望复制到联系人列表列中会尝试根据电子邮件地址填写联系人的姓名。

有没有办法在 XLS 导入或复制过程中强制将其转换为联系人姓名?

编辑:

从下面的一些答案中可以看出,我想副本会按原样复制数据是有道理的,所以我试图让它在 XLS 导入时填写联系人姓名。

我正在尝试找到一种方法在 Excel 中同时注入显示值和值,但尚未成功。我尝试过超链接、电子邮件链接、=HYPERLINK() 公式,但到目前为止没有成功。

【问题讨论】:

    标签: python-2.7 smartsheet-api


    【解决方案1】:

    如果您将Value 设置为电子邮件地址,并将displayValue 设置为联系人姓名,您应该能够获得所需的内容。例如,以下通用 HTTP 请求正文将在单元格中显示“MyUser Gmail”,但将myuser@gmail 作为联系人电子邮件。

    [
      {
       "toBottom": true, 
       "cells": [
          {
           "columnId": 6xxxxxxxxxxxxxx8, 
           "value": "myuser@gmail.com", 
           "displayValue": "MyUser Gmail"
          }
        ]
      }
    ]
    

    【讨论】:

    • 感谢您的回答。我认为这不适用于这种情况,因为不涉及任何请求,所有值都来自 XLS 文件,它(据我所知)不支持 displayValue 和 value 之间的拆分。
    • 这可能对 OP 没有帮助,但它解决了我通过 API 更新联系人单元格的问题,非常感谢!
    【解决方案2】:

    如果displayValue 为空,则表明此单元格的联系人没有与之关联的名称。如果您的原始工作表确实包含名称,则故障点很可能在复制过程中。

    如果不研究 Python SDK,我可能会猜测 copy_rows() 只是由 value 而不是 displayValue 复制。尝试手动设置联系人单元格的值/显示值,看看是否可行。

    【讨论】:

    • 您好,谢谢您的回答。导入 XLS 文件时,excel 文件本身只包含电子邮件地址。 Smartsheet 可识别联系人,但仍将电子邮件用作 displayValue。 (实际上它根本没有填写显示值)。副本本身完全复制了它,也没有填写显示值(回想起来,我认为这是一个很好的行为)。听起来导入本身是不遵循文档中突出显示的相同行为的部分。如果我在 XLS 表中输入姓名,则它根本无法识别联系人。
    • Smartsheet 联系人单元格包含的信息比 Excel 单元格中存储的信息要多。但是,由于从技术上讲,您可以将多个名称与同一封电子邮件关联,因此它并不像导入电子邮件并使其与名称自动关联那么简单。之后您仍然需要手动设置名称。
    • 对,这就是我所在的位置,但希望有更好的方法。可悲的是,由于使用 update_rows 请求中的所有行必须具有相同的父项的限制,这意味着我需要每张表有几百个请求,这完全取消了一次上传整个 XLS 文件的点。我将与该项目的利益相关者核实他们是否可以接受其中的电子邮件地址而不是姓名。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-02
    相关资源
    最近更新 更多