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



我在Google Apps Script中创建了一个函数,用于在Google Drive中创建和管理多个项目(例如创建文件夹、新文档或Xls文件等(。重要的是我有4个Doc文档(或模板(:MainDoc+3个额外的文档文件。在我的脚本中,MainDoc文件被复制并重命名(step1(,然后在第二步中,用将在MainDoc上添加/组合其文本的3个附加文件的ID定义数组(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命令。

有人能帮我吗?。

非常感谢。

Wardiam

我相信你的目标和目前的情况如下。

  • 您想要使用curl命令给GlobalWorkflow(ProjectID, mergeDocsID)["##Doc2ID##","##Doc3ID##","##Doc4ID##"]mergeDocsID这样的数组
  • 您已经确认,当为函数GlobalWorkflow提供正确的值时,脚本运行良好
  • 您已经能够使用Google应用程序脚本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。所以在GoogleAppsScript端,当运行上述修改后的curl命令并检查mergeDocsID[0]时,返回"##Doc2ID##"

参考:

  • 方法:scripts.run

相关内容

  • 没有找到相关文章

最新更新