使用 cURL 在 Google Apps 脚本函数中添加数组作为参数

Add array as parameter in Google Apps Script function using cURL

我在 Google Apps 脚本中创建了一个函数,用于在 Google 云端硬盘中创建和管理多个项目(例如创建文件夹、新的 Doc 或 Xls 文件等)。重要的是我有 4 个 DOC 文档(或模板):MainDoc + 3 个额外的 Doc 文件。使用我的脚本,MainDoc 文件被复制并重命名 (step1),然后在第二步中用 3 个附加文件的 ID 定义数组,这些文件将成为 added/combining 它们在 MainDoc 上的文本(step2)。 为了使我的解释易于理解,我展示了我的函数的基本结构:

1    function GlobalWorkflow(ProjectID, mergeDocsID) {
2    ...
3    //### STEP1 ###//
4      var newFolderID = parentFolder.createFolder(date + '_Report').getId();
5      var newFolder = DriveApp.getFolderById(newFolderID);  
6      var docTemplateID = "##MainDocID##";
7      var getDOCTemplate = DriveApp.getFileById(docTemplateID);
8      var MainDocID = getDOCTemplate.makeCopy(date + '_Report', newFolder).getId();
9    ...
10    //### STEP2 ###//
11      //Input: documentIDs to merge
12      //var mergeDocsID = "##Doc2ID##|##Doc3ID##|##Doc4ID##"
13      var mergeArray = mergeDocsID.split('|');
14      for (var i = 0; i < mergeArray.length; i++) {
15      mergeGoogleDocs(MainDocID, mergeArray[i]);
16     }
17    ...
18    }

第 15 行调用另一个函数“mergeGoogleDocs”,该函数有 2 个参数。此其他功能在其他 中有所描述,感谢 @Tanaike 我使用以下命令从 cURL 中成功 运行 此功能:

curl -X POST \
-H 'Authorization: Bearer ### access token ###' \
-H "Content-Type: application/json" \
-d '{"function": "##function name##", "parameters": ["##docID1##", "##docID2##"], devMode: true}' \
"https://script.googleapis.com/v1/scripts/### script ID ###:run"

我现在遇到的问题是我想 运行 'GlobalWorkflow' 函数,但参数之一 (mergeDocsID) 是数组与要组合的文档文件的 ID,我让整个脚本从 cURL 工作,除了那部分 (Step2) 尽管响应没有给我一个错误。

这是我使用的命令:

curl -X POST \
-H 'Authorization: Bearer ### access token ###' \
-H "Content-Type: application/json" \
-d '{"function": "##function name##", "parameters": ["##MainDocID##", "##Doc2ID##|##Doc3ID##|##Doc4ID##"], devMode: true}' \
"https://script.googleapis.com/v1/scripts/### script ID ###:run"

如何在 cURL 命令中包含数组以使“mergeGoogleDocs”功能正常工作?

PS。如果我取消注释第 12 行和 运行 GAS 中的函数,一切正常,并创建包含 4 个文件的组合文档。 cURL 命令不起作用。

谁能帮帮我?

非常感谢。

沃迪亚姆

我认为您的目标和现状如下。

  • 您想使用 curl 命令将 ["##Doc2ID##","##Doc3ID##","##Doc4ID##"]mergeDocsID 之类的数组 GlobalWorkflow(ProjectID, mergeDocsID)
  • 您已经确认,当为函数 GlobalWorkflow 提供正确的值时,脚本运行良好。
  • 您已经能够 运行 使用 Google Apps 脚本的功能 API。

为了得到像["##Doc2ID##","##Doc3ID##","##Doc4ID##"]这样的数组,请修改你的curl命令如下。

发件人:

curl -X POST \
-H 'Authorization: Bearer ### access token ###' \
-H "Content-Type: application/json" \
-d '{"function": "##function name##", "parameters": ["##MainDocID##", "##Doc2ID##|##Doc3ID##|##Doc4ID##"], devMode: true}' \
"https://script.googleapis.com/v1/scripts/### script ID ###:run"

收件人:

curl -X POST \
-H 'Authorization: Bearer ### access token ###' \
-H "Content-Type: application/json" \
-d '{"function": "##function name##", "parameters": ["##MainDocID##", ["##Doc2ID##","##Doc3ID##","##Doc4ID##"]], devMode: true}' \
"https://script.googleapis.com/v1/scripts/### script ID ###:run"
  • 通过上述修改,["##Doc2ID##","##Doc3ID##","##Doc4ID##"]的数组给出为GlobalWorkflow(ProjectID, mergeDocsID)mergeDocsID。因此,在 Google Apps 脚本端,当上面修改的 curl 命令为 运行 并且选中 mergeDocsID[0] 时,返回 "##Doc2ID##"

参考: