2016-01-26 49 views
0

我到處尋找並找不到此問題。我從PeopleSoft轉到.NET,最近纔開始學習JavaScript,我試圖使用Google Apps腳本向Slack發送電子郵件通知消息。Google Apps腳本UrlFetchApp未正確編碼JSON數組

在我看來,GAS的UrlFetchApp沒有正確處理數組。下面我沒有包含所有的Slack API選項。在這裏,我如何構造的有效載荷,其中「附件」包含所討論的陣列:

var payload = 
     { 
     // ... 
     "username": "Test webhook Bot", 
     "attachments": [ 
      { 
      "pretext": "pre-hello1", 
      "text": "text-world1" 
      }, 
      { 
      "pretext": "pre-hello2", 
      "text": "text-world2" 
      } 
     ]   
     // ...   
     }; 


var options = 
     { 
     "method" : "post", 
     "payload" : payload, 
     "contentType":"application/json" 
     }; 

var response = UrlFetchApp.fetch(requestURL, options); 

當測試我發現,職位是存在的,但鬆弛無視​​該消息的附件部分。我用下面的檢查傳出POST:

var response = UrlFetchApp.getRequest(requestURL, options); 

而且我發現看執行談話我發現,JSON數組我載荷沒有被編碼我預期的方式。在執行之前,我清楚地看到格式正確的數組。

[16-01-26 07:26:39:050 MST] UrlFetchApp.getRequest([https://slack.com/api/chat.postMessage,{方法=交,有效載荷= {附件= [{藉口=預hello1,文本=文本-world1},{由頭=預hello2,文本=文本world2}],用戶名=測試網絡掛接博特},則contentType =應用/ JSON}])[0秒]

但什麼實際發送,代替附件陣列的是:%5BLjava.lang.Object; @ 37f01fb3

[16-01-26 07:26:39:051 MST] Logger.log([測試:https://slack.com/api/chat.postMessage?attachments=%5BLjava.lang.Object;@37f01fb3&username=Test+webhook+Bot,[])[0秒]

我試圖尋求幫助之前,盡我所能搜索了這一點,但我不知道如果我現在不是損失。有誰知道我在哪裏可以找到我失蹤的東西?謝謝。

+0

我發現,如果我使用JSON.stringify(有效載荷)在我的選項對象的數組完整的POST。 –

+0

您是否找到解決方案? –

+0

@SandyGood:我確實得到了答案。我剛剛發佈了它以及根據我以前的評論瞭解到的其他信息。感謝您的檢查。 –

回答

1

根據我從Google Drive Help Forum discussion收到的意見,我想傳遞更多關於使用JSON.stringify()創建我的Slack請求的信息。我修改我的選擇JSON

var options = { 
    'method': 'post', 
    'payload': JSON.stringify(payload) 
    }; 

谷歌則建立請求時,我再也看不到java.lang.Object繼承錯誤正確地解釋了「附件」陣列。

額外的經驗教訓:在使用JSON.stringify()之前,Slack會允許我使用我的個人開發人員令牌作爲有效負載的一部分。一旦我開始使用JSON.stringify()Slack不會接受我的個人令牌,也不能傳遞通道參數。這導致我創建一個Slack Incoming Webhook直接到我想要的頻道。我沒有找到原因。它可能在Slack的文檔中,我只是沒有時間看。

相關問題