gpt4 book ai didi

Smartsheet-API:在工作表中填充数据和公式

转载 作者:行者123 更新时间:2023-12-04 04:31:45 25 4
gpt4 key购买 nike

更新 2022-12-01

这个问题现在已经过时了。 Smartsheet API 现在支持请求的功能。接受的答案包含有关更新的更多详细信息。

语境

开发人员希望使用 smartsheet API 填充现有的 smartsheet 工作表。要填充的数据包括数据和公式。

但是,根据 API 文档 (http://www.smartsheet.com/developers/api-documentation),无法使用 API 添加公式。

Cells containing formulas, links to other cells, system values, orGantt values cannot be inserted or updated through the API.

问题

测试证实了这一点。尝试使用智能表 API 添加简单公式会导致公式转换为不透明文本。检查显示公式被单引号字符修改,这将其呈现为不透明文本而不是公式。

问题

有什么方法(除了通过手动输入)强制 smartsheet 重新评估插入的不透明文本,以便将不透明文本转换回公式?

如果不可能(除了通过手动输入),是否可以复制包含公式的现有工作表,然后将非公式数据填充到工作表中,全部使用 smartsheet API?

目标

基本目标是找到一种无需手动输入公式数据即可将公式数据填充到智能表应用程序中的方法。

最佳答案

更新:Smartsheet 现在支持通过 API 添加或更新公式,可在 adding a row 的文档中找到和 updating a row .

主要区别是在行对象中设置公式而不是设置


原始答案

您是对的,目前 API 不支持公式。不过,我们确实计划在未来添加此功能。

目前,如果您尝试将公式发送到 API,它将作为字符串处理,并且会在公式的开头添加一个单引号。然后,将字符串转换回公式的唯一方法是在 Smartsheet UI 中手动删除单引号。

可用选项

如果您始终使用相同的公式,那么您使用模板的建议肯定会奏效。该过程将如下所示:

  1. 使用您要使用的公式设置模板。
  2. 根据模板创建新工作表。
  3. 向公式将使用的新工作表添加额外数据。

Note: rows that have never been used cannot be updated since they do not exist. So, in the template you can initialize the rows by putting a word in the locations that you want to update. For example, you could put the word "PLACEHOLDER" in all of the locations that you intend to update.

我在下面添加了两个示例,一个使用 curl,另一个使用我们的 Java SDK .

curl 示例

从模板创建一个新工作表。确保在以下命令中替换 YOUR_TOKENYOUR_TEMPLATE_OR_SHEET_ID

curl https://api.smartsheet.com/1.1/sheets?include=data,attachments,discussions -H "Authorization: Bearer YOUR_TOKEN" -H "Content-Type: application/json" -X POST -d '{"name":"newSheetFromTemplate","fromId":"YOUR_TEMPLATE_OR_SHEET_ID"}'

然后从响应中获取工作表 ID 并发出命令以获取行 ID。

curl https://api.smartsheet.com/1.1/sheet/YOUR_SHEET_ID -H "Authorization: Bearer YOUR_TOKEN"

最后,从响应中获取行 ID 和列 ID,并发出命令以更新相应的单元格。我正在使用以下命令更新值为 1 和 2 的两个单元格。

curl https://api.smartsheet.com/1.1/row/YOUR_ROW_ID/cells -H "Authorization: Bearer YOUR_TOKEN" -H "Content-Type: application/json" -X PUT -d '[ {"columnId": YOUR_COLUMN_ID, "value": 1}]'
curl https://api.smartsheet.com/1.1/row/YOUR_ROW_ID/cells -H "Authorization: Bearer YOUR_TOKEN" -H "Content-Type: application/json" -X PUT -d '[ {"columnId": YOUR_COLUMN_ID, "value": 2}]'

SDK 示例

此示例需要安装我们的 Java SDK .还有一个C# SDK以非常相似的方式工作。

import java.util.EnumSet;
import java.util.List;

import com.smartsheet.api.Smartsheet;
import com.smartsheet.api.SmartsheetBuilder;
import com.smartsheet.api.models.Cell;
import com.smartsheet.api.models.Column;
import com.smartsheet.api.models.ObjectInclusion;
import com.smartsheet.api.models.Row;
import com.smartsheet.api.models.Sheet;
import com.smartsheet.api.SmartsheetException;

public class Test {

public static void main(String[] args) throws SmartsheetException {
// Setup a Smartsheet object
Smartsheet smartsheet = new SmartsheetBuilder().setAccessToken("YOUR_TOKEN").build();

// Create a copy of a sheet from the template
Sheet newSheet = new Sheet.CreateFromTemplateOrSheetBuilder().setFromId(YOUR_TEMPLATE_OR_SHEET_ID).setName("newSheetName").build();
newSheet = smartsheet.sheets().createSheetFromExisting(newSheet, EnumSet.allOf(ObjectInclusion.class));

// Get the columns/rows/data for the sheet we just created
newSheet = smartsheet.sheets().getSheet(newSheet.getId(), EnumSet.allOf(ObjectInclusion.class));

// Grab the column and rows that will be updated in the new sheet
Column column1 = newSheet.getColumnByIndex(0);
Row row1 = newSheet.getRowByRowNumber(1);
Row row2 = newSheet.getRowByRowNumber(2);

// Setup two cells for the the specified columns
List<Cell> newCell1 = new Cell.UpdateRowCellsBuilder().addCell(column1.getId(), 1).build();
List<Cell> newCell2 = new Cell.UpdateRowCellsBuilder().addCell(column1.getId(), 2).build();

// Update the cell for the specified row
smartsheet.rows().updateCells(row1.getId(), newCell1);
smartsheet.rows().updateCells(row2.getId(), newCell2);
}
}

关于Smartsheet-API:在工作表中填充数据和公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22925389/

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