我试图写一个GAS
迁移某些电子邮件被存储在Google Drive
,但我真的努力得到这个职位正确的做到这一点,并希望有人能帮助我,并引导我在正确的方向。
我至今是..
var id = "12345678abcdefgh";
var doc = DocumentApp.openById(id);
var emlData = doc.getText();
var api_scope = 'https://www.googleapis.com/auth/email.migration';
var app_name = "migration";
var userKey = "someone@mygappsdomain.com";
var method = "POST";
var url = "https://www.googleapis.com/upload/email/v2/users/"+userKey+"/mail?uploadType=multipart";
var fields = {"MailItem" :
{"properties":
{'isInbox': 'true','isUnread': 'true'},
'labels': ['MigrateMe']}};
var options = {payload: {data: JSON.stringify(emlData), fields: fields, contentType: 'multipart/related', boundary : 'part_boundary'}};
var fetchArgs = googleOauth_(app_name,api_scope,method,options);
try
{
var result = UrlFetchApp.fetch(url, fetchArgs).getResponseCode();
Logger.log("done");
}
catch (ee)
{
Logger.log(ee);
}
}
这显然不工作,我得到一个400错误代码。 你知道什么地方出错了?
正如评论所说的这里向为例与操场API做到这一点:
第1步:
授权: https://www.googleapis.com/auth/email.migration
第2步:
授权blbablablabla(你知道这里做什么)
步骤3:
你需要做一个POST到HTE网址:
https://www.googleapis.com/upload/email/v2/users/ EMAILADRESS@DOMAIN.EXT /邮件
内容类型需要被设置:自定义...
和参数是:
uploadType:media
Content-Type:message/rfc822
请求主体必须看是这样的:
Date: Wed, 03 Jan 2013 02:56:03 -0800
From: admin@example.org
To: liz@example.com
Subject: Hello World!
MIME-Version: 1.0
Content-Type: text/html; charset=windows-1252
Content-transfer-encoding: 8bit
And I think to myself... What a wonderful world!
(你可以采取的正是这种人做一些测试,然后在你的邮箱搜索“利兹”)
如果一切正常,你应该有这样的事情:
要做到这一点我以前在这里找到的文档:
https://developers.google.com/admin-sdk/email-migration/v2/guides/upload
https://developers.google.com/admin-sdk/email-migration/v2/reference/mail/insert
这是不是解决您的文章,但我希望这将有助于你得到它! (顺便说一句,如果你有一个很好的工作代码,请给真正的回答你的问题 - 我也有兴趣)
脚本
我冒昧在这里重建您的评论的型动物部分:
var template = HtmlService.createTemplateFromFile("MailTemplate");
template.sentDate = "Wed, 04 Mar 2014 02:56:03 -0800";
template.from = "sender.address@blahblah.com";
template.to = "recipient.address@blahblah.com";
template.subject = "second test";
template.body = "I was migrated via script !!!!";
template.sentDate = eml_sentDate;
template.from = eml_from;
template.to = eml_to;
template.subject = eml_subject;
template.body = eml_body;
var emlData = template.evaluate().getContent();
var api_scope = 'googleapis.com/auth/email.migration';;
var app_name = "migration";
var userKey = "recipient.address@blahblah.com";
var method = "POST";
var url = "googleapis.com/upload/email/v2/users/" + userKey + "/…";
var options = { method : 'POST', contentType: 'message/rfc822', uploadType: 'media', payload: emlData };
var fetchArgs = googleOauth_(app_name, api_scope, method);
fetchArgs.payload = emlData;
fetchArgs.contentType = 'message/rfc822';
fetchArgs.uploadType = 'media';
var result = UrlFetchApp.fetch(url, fetchArgs).getResponseCode();
多
我可以给你多杜:这是一个专用于做批量向Google API脚本的一部分(它的目的是将用户添加到一个谷歌组)。 批处理通过多文件,所以我想这是相当比你的邮件同样的事情做:
function batchRequest(userArray,grpEmail){
var grpEmail = grpEmail || "testgroup@domain.ext";
//var postUrl = "https://www.googleapis.com/admin/directory/v1/groups/"+grpEmail+"/members";
var postUrl = 'https://www.googleapis.com/batch';
var accessToken = refreshAccessToken();
var userEmail = ""
var boundary = 'batch_foobarbaz';
var payload = "";
for(var i in userArray){
payload+= '--'+boundary+'\nContent-Type: application/http\nContent-Transfer-Encoding: binary\n\n';
payload+='POST /admin/directory/v1/groups/'+grpEmail+'/members HTTP/1.1\n';
payload+= 'Content-type: application/json\n\n';
payload+='{"email": "'+userArray[i]+'", "role": "MEMBER"}\n';
}
payload+='--'+boundary+'--';
var params={
method:'POST',
contentType:'multipart/mixed; boundary="'+boundary+'"',
headers:{
Authorization:" OAuth "+accessToken
},
payload:payload,
muteHttpExceptions:true
}
var requestResponse = UrlFetchApp.fetch(postUrl, params);
var result = requestResponse.getContentText();
Logger.log(requestResponse.getResponseCode()+" - "+result);
return(requestResponse.getResponseCode());
}