2014-10-19 81 views
0

我正在嘗試使用Gmail API的節點庫爲自定義標識創建一個標籤。該API提供了設置自己的ID的請求參數,但是當我嘗試創建標籤,我得到錯誤:通過Google Gmail API創建帶有標識的標籤

{ 
"error": { 
    "errors": [ 
    { 
    "domain": "global", 
    "reason": "invalidArgument", 
    "message": "Invalid request" 
    } 
    ], 
    "code": 400, 
    "message": "Invalid request" 
} 
} 

標籤是沒有問題時創建的,我不給一個id。然而,爲了我的目的,我需要有一套標準的標籤ID。任何人都知道這裏發生了什麼,或者它只是api的錯誤/錯誤? 您可以嘗試創建自己的標籤,爲您的帳戶,看看更多的什麼,我這裏所說的:https://developers.google.com/apis-explorer/#p/gmail/v1/gmail.users.labels.create

代碼來創建標籤:

var service = Google.gmail({version : 'v1', auth : oauth2Client}); 
service.users.labels.create({ 
    userId : 'user address here', 
    labelListVisibility : 'labelShow', 
    messageListVisibility : 'show', 
    name : 'label name here', 
    id : 'label id here' 
}, function (err) { 
    if (err) { 
     throw err; 
    } else { 
     callback(); 
    } 
}); 

謝謝!

回答

5

您說「API具有設置您自己的ID的請求參數」,但https://developers.google.com/gmail/api/v1/reference/users/labels/create的文檔沒有顯示任何此類字段作爲users.labels.create端點的一部分。

如果你看https://developers.google.com/gmail/api/v1/reference/users/labels,你會看到一個不可變的id字段,但這是不可寫的,所以這個值由系統而不是你設置。

users.labels.create的文檔還指出將返回完全填充的Users對象,因此您將能夠知道剛剛創建的標籤的ID是什麼。要使用node.js庫執行此操作,請將回調函數設置爲具有第二個參數,該參數將包含調用的結果。因此,它可能是這個樣子:


var service = Google.gmail({version : 'v1', auth : oauth2Client}); 
service.users.labels.create({ 
    userId : 'user address here', 
    labelListVisibility : 'labelShow', 
    messageListVisibility : 'show', 
    name : 'label name here' 
}, function (err, result) { 
    if (err) { 
     throw err; 
    } else { 
     console.log(result); 
     callback(result); 
    } 
}); 

正如評論指出的那樣,你也可以使用users.labels.list獲得標籤的完整列表此用戶。

+0

如果您轉到此鏈接,請執行以下操作:https://developers.google.com/apis-explorer/#p/gmail/v1/gmail.users.labels.create 然後單擊請求正文,其中顯示「添加財產「和id字段在那裏列出。如果你不能寫信給它,爲什麼有這個選項?我一直認爲這是不可變的,否則不知道標籤的ID使它們幾乎無用。 – ewein 2014-10-19 14:24:52

+0

您需要使用labels.list()來確定標籤ID <-->名稱映射(儘管系統標籤具有一致的ID)。 API Explorer無法確定哪些字段是隻讀的,哪些是可讀寫的。您需要檢查該信息的文檔。 – 2014-10-19 15:30:59

+0

從我能找到的文檔中,只能通過給出標籤ID來將標籤應用於消息。我在另一個論壇上閱讀過,也可以使用標籤名稱,但我找不到任何支持的文檔。 – ewein 2014-10-20 03:11:18