我正在尝试使用java程序连接到smartsheet api.最初我遇到了站点证书的问题,该证书通过将其添加到java密钥库来解决.现在,当我尝试运行我的代码时,我收到以下错误.
Exception in thread "main" java.lang.NoSuchFieldError: INSTANCE
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.<clinit>(SSLConnectionSocketFactory.java:144)
at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:955)
at org.apache.http.impl.client.HttpClients.createDefault(HttpClients.java:58)
at com.smartsheet.api.internal.http.DefaultHttpClient.<init>(DefaultHttpClient.java:64)
at com.smartsheet.api.SmartsheetBuilder.build(SmartsheetBuilder.java:203)
at SmartsheetConnection.main(SmartsheetConnection.java:13)
Run Code Online (Sandbox Code Playgroud)
这是我的代码(我按照他们的文档).
import com.smartsheet.api.*;
import com.smartsheet.api.models.*;
import com.smartsheet.api.models.enums.*;
import com.smartsheet.api.oauth.*;
public class SmartsheetConnection {
public static void main(String[] args) throws SmartsheetException {
// Set the access token.
Token token = new Token();
token.setAccessToken("foo");
Smartsheet smartsheet = new SmartsheetBuilder().setAccessToken(token.getAccessToken()).build();
}
}
Run Code Online (Sandbox Code Playgroud)
投掷错误的行是(第144行)
@Deprecated
public static final X509HostnameVerifier ALLOW_ALL_HOSTNAME_VERIFIER
= AllowAllHostnameVerifier.INSTANCE;
Run Code Online (Sandbox Code Playgroud)
但我不知道该怎么做.我正在使用maven来获取依赖项.它与Apache HttpComponents的版本有关吗?
这是pom.xml
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target> …
Run Code Online (Sandbox Code Playgroud) 我希望能够从C#中的特定列中检索数据行作为列表.因此,如果有一列人物高度,它会列出列表中的那些高度.可能还列出x,y值表示特定日期的苹果数量.
我查看了有关API信息的示例,但无法找到有关如何执行此操作的示例 - 它们主要包括创建文件夹,用户或列出文件夹或工作表或在智能表等上输入信息,但实际上没有实际获取数据.
以下是我看过的代码:https : //github.com/smartsheet-platform/samples/tree/master/c%23 https://github.com/smartsheet-platform/smartsheet-csharp-sdk
但我实际上想把数据作为一个列表拉出来,然后在C#中为最终用户处理它,所以我不想把它放回到智能表中.
是唯一的方法来使用API下载文件作为Excel表格并从那里开始?如果可能的话,我真的想跳过这一步吗?
我应该补充一点,我想使用C#SDK来做到这一点.
我认为我需要输入的具体代码(我认为)是为了得到表格.
// Set the Access Token
Token token = new Token();
token.AccessToken = "INSERT_YOUR_TOKEN_HERE";
long id = "INSERT SHEET ID HERE";
// Use the Smartsheet Builder to create a Smartsheet
SmartsheetClient smartsheet = new SmartsheetBuilder().SetAccessToken(
token.AccessToken).Build();
//Code to get sheet
smartsheet.Sheets().GetSheet(long id, **IEnumerable<ObjectInclusion?includes**).Rows();
Run Code Online (Sandbox Code Playgroud)
这是我不确定他们需要的最后一个参数.它在GetSheet方法中说:
Sheet GetSheet(长id,IEnumerable包含)
这是ObjectInclusion枚举的链接 - http://smartsheet-platform.github.io/smartsheet-csharp-sdk/html/T_Smartsheet_Api_Models_ObjectInclusion.htm
尝试使用这个 smartsheet api:http ://smartsheet-platform.github.io/api-docs/?javascript#node.js-sample-code
并告诉我为 nodejs 执行此操作:
var client = require('smartsheet');
var smartsheet = client.createClient({accessToken:'ACCESSTOKEN'});
Run Code Online (Sandbox Code Playgroud)
因此,我在 main.js 文件中执行此操作,但出现错误:未捕获的 ReferenceError:需要未定义
我认为这是因为我是 nodejs/npm 的新手,但我无法在任何地方找到它来实际放置这个 require 函数。我想我需要弄乱我的 node.js 文件,但我完全确定。非常感谢任何指向文档或建议的链接!
我需要在一个请求中获取所有列的列表,并且手动指出我应该传递查询字符串参数:
大多数索引端点默认为页面大小为100的结果.如果一次需要所有结果,则应指定includeAll = true查询字符串参数.
这是我试过的:
var options = {
sheetId: 2252168947361668,
includeAll: true
};
smartsheet.sheets.getColumns(options)
.then(function (data) {
console.log(data);
})
.catch(function (error) {
console.log(error);
});
Run Code Online (Sandbox Code Playgroud)
但它只返回前100列.我应该如何smartsheet-api
从node.js 传递查询字符串参数?
我已经使用和阅读 smartsheet API 几个小时了,我注意到在我必须提出的所有请求中,我需要行 ID 或列 ID。我一定在这里遗漏了一些简单的东西,但是我在哪里可以找到这些 ID?它们是通过查询找到的还是在实际可视工作表上的某个地方找到的?
目前我正在尝试创建一个 json 对象来发送给我工作表,这是我的代码:
MySS = smartsheet.Smartsheet('*****************')
headers = {"Authorization": "Bearer *****************", "Content-Type": 'application/json',
"Accept": "application/json"}
row = MySS.Sheets.get_row(***********, HOW_DO_I_GET_THIS, include='discussions,attachments,columns,columnType')
r = requests.post("https://api.smartsheet.com/2.0/sheets/**********/rows", json=row, headers=headers)
Run Code Online (Sandbox Code Playgroud)
我从中得到的错误消息是:
Traceback (most recent call last):
File "C:/Users/***/**/**/**/***", line 89, in <module>
headers=headers)
File "C:\Python27\lib\site-packages\requests\api.py", line 111, in post
return request('post', url, data=data, json=json, **kwargs)
File "C:\Python27\lib\site-packages\requests\api.py", line 57, in request
return session.request(method=method, url=url, **kwargs)
File "C:\Python27\lib\site-packages\requests\sessions.py", line 475, in request
resp = self.send(prep, **send_kwargs)
File "C:\Python27\lib\site-packages\requests\sessions.py", …
Run Code Online (Sandbox Code Playgroud) 'Smartsheet.Api.InvalidRequestException:'2018年4月19日,列324579127256964中单元格的值不符合DATE类型的严格要求。
我收到上述错误,试图使用C#以编程方式将19/04/2018插入列中。
如错误所示,它不符合严格的要求。有什么要求?
我想通过Smartsheet api找到一张纸,我所拥有的就是纸张的名称.我现在正在解决这个问题
sheet_name = 'The sheet I have the name of'
sheets = ss_client.Sheets.list_sheets(include_all=True).data
sheet_id = next(sheet.id for sheet in sheets if sheet.name == sheet_name)
sheet_that_I_want = ss_client.Sheets.get_sheet(sheet_id)
Run Code Online (Sandbox Code Playgroud)
有一个get_sheet方法,但它基于工作表的id.我觉得必须有更直接的方法来做到这一点,但我不确定它会是什么.
我不明白如何导入 Smartsheet 并将其转换为 Pandas 数据框。我想从 smartsheets 操作数据,目前我转到 smartsheets 导出到 csv 并在 python 中导入 csv 但想消除这一步,以便它可以按计划运行。
import smartsheet
import pandas as pd
access_token ='#################'
smartsheet = Smartsheet(access_token)
sheet = smartsheet.sheets.get('Sheet 1')
pd.DataFrame(sheet)
Run Code Online (Sandbox Code Playgroud)