Nodejs Smartsheet API 尝试将行移动到另一行时出错 sheet
Nodejs Smartsheet API Error when trying to move row to another sheet
我一直在研究基于 smartsheet 的简单生产管理流程。我一直 运行 的代码在我的 Ubuntu 机器上运行良好,然后我将它复制到我的 Parrot Linux 机器 运行 相同的节点版本并且它赢了' 找到一个存在的行。以下是要求:
var copyRow = {
"rowIds": artToProdRowsToCopy,
"to": {
"sheetId": productionId
}
};
// Set options
var options = {
sheetId: artId,
body: copyRow,
queryParameters: {
include: "all"
}
};
console.log(options);
// Copy the normal engraved rows from art to production
smartsheet.sheets.copyRowToAnotherSheet(options)
.then(function(results) {
callback1(null, results);
})
.catch(function(error) {
console.log(error);
});
选项的日志输出:
{ sheetId: 8129017524546436,
body:
{ rowIds: [ 8886954296800644 ],
to: { sheetId: 6941481487333252 } },
queryParameters: { include: 'all' } }
错误:
{ statusCode: 404,
errorCode: 1006,
message: 'Not Found',
refId: 'zjl2z56296l9' }
我是 运行 节点 v8.9.1,Parrot Linux 3.9.
我已经检查过这些 sheet 和行 ID # 中的每一个都是正确的,它们都是正确的(但是示例中的那些不是真实的)。任何帮助,将不胜感激。
编辑:添加调试信息:
[Smartsheet] 2017-11-20T20:22:55.876Z[ INFO] POST https://api.smartsheet.com/2.0/sheets/8129017124546436/rows//copy?include=all
[Smartsheet] 2017-11-20T20:22:55.876Z[VERBOSE] Request Payload (preview): {"rowIds":[2759271070885764,3212501789763460,4576920289470340,8982631438149508,2962733838690180,8886959296800644],"to":{"sheetId":6941441487333252}}
[Smartsheet] 2017-11-20T20:22:55.876Z[ DEBUG] Request Payload (full): {"rowIds":[2759271070885764,3212501789763460,4576920289470340,8982631438149508,2962733838690180,8886959296800644],"to":{"sheetId":6941441487333252}}
[Smartsheet] 2017-11-20T20:22:56.155Z[ ERROR] Request failed after 0 retries
[Smartsheet] 2017-11-20T20:22:56.156Z[ ERROR] POST https://api.smartsheet.com/2.0/sheets/8129017124546436/rows//copy?include=all
[Smartsheet] 2017-11-20T20:22:56.156Z[ ERROR] Response: Failure (HTTP 404)
Error Code: 1006 - Not Found
Ref ID: 85bn0m2j8oki
我没有发现您的请求结构有任何明显的问题。通常,404 Not Found 错误与请求 URI 的问题有关,而不是与请求本身的内容有关。即,404 Not Found 错误意味着由于某种原因无法访问请求 URI。
复制行 请求的 URI 是:
POST /sheets/{sheetId}/rows/copy
一些故障排除建议:
验证请求URI中所有字符的大小写是否为小写。
验证请求 URI 中 sheetId
值对应的 sheet 是否存在。
验证拥有您在 复制行的 Authorization
header 中指定的 API 访问令牌的用户(s) API 请求确实可以访问与请求 URI 中的 sheetId
值相对应的 sheet。
如 API 文档的 Troubleshooting 部分所述,我建议您使用 Fiddler 或 Charles HTTP Proxy 等工具来检查您的应用发送的原始 HTTP 请求, 那么你可以 investigate/verify 我上面列出的项目。
更新#1
感谢您使用调试信息更新 post。基于此,您的请求 URI 似乎在单词 rows
和 copy
:
之间包含一个额外的斜杠
POST https://api.smartsheet.com/2.0/sheets/8129017124546436/rows//copy?include=all
这可能是您遇到问题的原因?
更新#2
如果我的请求 URI 在单词 rows
和 copy
之间包含两个斜杠,我已经能够在 Postman 中重现 Not Found 错误(就像你的调试输出显示的那样)。删除其中一个斜杠可以解决此问题。也就是说,您的请求应如下所示(rows
和 copy
之间只有一个斜线)。
POST https://api.smartsheet.com/2.0/sheets/8129017124546436/rows/copy?include=all
看起来像我们的 SDK 错误。请继续关注修复。
已在版本 1.0.3 中修复 - 现在 Github 和 npm。
https://www.npmjs.com/package/smartsheet
https://github.com/smartsheet-platform/smartsheet-javascript-sdk/releases/tag/v1.0.3
我一直在研究基于 smartsheet 的简单生产管理流程。我一直 运行 的代码在我的 Ubuntu 机器上运行良好,然后我将它复制到我的 Parrot Linux 机器 运行 相同的节点版本并且它赢了' 找到一个存在的行。以下是要求:
var copyRow = {
"rowIds": artToProdRowsToCopy,
"to": {
"sheetId": productionId
}
};
// Set options
var options = {
sheetId: artId,
body: copyRow,
queryParameters: {
include: "all"
}
};
console.log(options);
// Copy the normal engraved rows from art to production
smartsheet.sheets.copyRowToAnotherSheet(options)
.then(function(results) {
callback1(null, results);
})
.catch(function(error) {
console.log(error);
});
选项的日志输出:
{ sheetId: 8129017524546436,
body:
{ rowIds: [ 8886954296800644 ],
to: { sheetId: 6941481487333252 } },
queryParameters: { include: 'all' } }
错误:
{ statusCode: 404,
errorCode: 1006,
message: 'Not Found',
refId: 'zjl2z56296l9' }
我是 运行 节点 v8.9.1,Parrot Linux 3.9.
我已经检查过这些 sheet 和行 ID # 中的每一个都是正确的,它们都是正确的(但是示例中的那些不是真实的)。任何帮助,将不胜感激。
编辑:添加调试信息:
[Smartsheet] 2017-11-20T20:22:55.876Z[ INFO] POST https://api.smartsheet.com/2.0/sheets/8129017124546436/rows//copy?include=all
[Smartsheet] 2017-11-20T20:22:55.876Z[VERBOSE] Request Payload (preview): {"rowIds":[2759271070885764,3212501789763460,4576920289470340,8982631438149508,2962733838690180,8886959296800644],"to":{"sheetId":6941441487333252}}
[Smartsheet] 2017-11-20T20:22:55.876Z[ DEBUG] Request Payload (full): {"rowIds":[2759271070885764,3212501789763460,4576920289470340,8982631438149508,2962733838690180,8886959296800644],"to":{"sheetId":6941441487333252}}
[Smartsheet] 2017-11-20T20:22:56.155Z[ ERROR] Request failed after 0 retries
[Smartsheet] 2017-11-20T20:22:56.156Z[ ERROR] POST https://api.smartsheet.com/2.0/sheets/8129017124546436/rows//copy?include=all
[Smartsheet] 2017-11-20T20:22:56.156Z[ ERROR] Response: Failure (HTTP 404)
Error Code: 1006 - Not Found
Ref ID: 85bn0m2j8oki
我没有发现您的请求结构有任何明显的问题。通常,404 Not Found 错误与请求 URI 的问题有关,而不是与请求本身的内容有关。即,404 Not Found 错误意味着由于某种原因无法访问请求 URI。
复制行 请求的 URI 是:
POST /sheets/{sheetId}/rows/copy
一些故障排除建议:
验证请求URI中所有字符的大小写是否为小写。
验证请求 URI 中
sheetId
值对应的 sheet 是否存在。验证拥有您在 复制行的
Authorization
header 中指定的 API 访问令牌的用户(s) API 请求确实可以访问与请求 URI 中的sheetId
值相对应的 sheet。
如 API 文档的 Troubleshooting 部分所述,我建议您使用 Fiddler 或 Charles HTTP Proxy 等工具来检查您的应用发送的原始 HTTP 请求, 那么你可以 investigate/verify 我上面列出的项目。
更新#1
感谢您使用调试信息更新 post。基于此,您的请求 URI 似乎在单词 rows
和 copy
:
POST https://api.smartsheet.com/2.0/sheets/8129017124546436/rows//copy?include=all
这可能是您遇到问题的原因?
更新#2
如果我的请求 URI 在单词 rows
和 copy
之间包含两个斜杠,我已经能够在 Postman 中重现 Not Found 错误(就像你的调试输出显示的那样)。删除其中一个斜杠可以解决此问题。也就是说,您的请求应如下所示(rows
和 copy
之间只有一个斜线)。
POST https://api.smartsheet.com/2.0/sheets/8129017124546436/rows/copy?include=all
看起来像我们的 SDK 错误。请继续关注修复。
已在版本 1.0.3 中修复 - 现在 Github 和 npm。
https://www.npmjs.com/package/smartsheet https://github.com/smartsheet-platform/smartsheet-javascript-sdk/releases/tag/v1.0.3