0

我一直在研究基于 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' }

我在 Parrot Linux 3.9 上运行节点 v8.9.1。

我已经检查了这些工作表和行 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
4

3 回答 3

1

我没有看到您的请求结构有任何明显的问题。通常,404 Not Found错误与请求 URI 的问题有关,而不是与请求本身的内容有关。即,404 Not Found错误意味着,由于某种原因,请求 URI 不可访问。

复制行请求的 URI是:

POST /sheets/{sheetId}/rows/copy

一些故障排除建议:

  • 验证请求 URI 中所有字符的大小写是否为小写。

  • 验证与sheetId请求 URI 中的值对应的工作表是否存在。

  • 验证拥有您在Copy Row(s)Authorization API 请求的标头中指定的 API 访问令牌的用户确实有权访问与请求 URI 中的值对应的工作表。sheetId

如 API 文档的疑难解答部分所述,我建议您使用 Fiddler 或 Charles HTTP 代理之类的工具来检查您的应用发送的原始 HTTP 请求,然后您可以调查/验证我列出的项目多于。

更新#1

感谢您使用调试信息更新您的帖子。基于此,您的请求 URI 似乎在单词rowsand之间包含一个额外的斜杠copy

POST https://api.smartsheet.com/2.0/sheets/8129017124546436/rows//copy?include=all

也许这会导致您的问题?

更新#2

如果我的请求 URI 在单词和之间包含两个斜杠(如您的调试输出所示),我已经能够在 Postman 中重现Not Found错误。删除这些斜线之一可以解决此问题。也就是说,您的请求应如下所示(单词和之间只有一个斜线)。rowscopyrowscopy

POST https://api.smartsheet.com/2.0/sheets/8129017124546436/rows/copy?include=all
于 2017-11-20T18:49:43.800 回答
0

看起来像我们的 SDK 错误。请继续关注修复。

于 2017-11-21T00:13:49.003 回答
0

已在 1.0.3 版中修复 - 现在在 Github 和 npm 上。

https://www.npmjs.com/package/smartsheet https://github.com/smartsheet-platform/smartsheet-javascript-sdk/releases/tag/v1.0.3

于 2017-11-22T01:01:02.140 回答