添付ファイル付きGmailの下書きを作成するためのGoogleスプレッドシートにスクリプトがバインドされています(下のスクリプトが添付されています。これには、他のユーザーがスクリプト内とGoogle Developer Consoleの両方でGmail APIを有効にする必要があります。Googleシートのバインドされたスクリプトを使用するGoogleデベロッパーコンソールでエラーが発生する
ファイルの所有者として、私はそれをうまくやり遂げることができます。ただし、他のユーザーがGoogle Developer ConsoleでGmail APIを有効にしようとすると、「このページを表示するための十分な権限がありません」というエラーメッセージが表示されます。
誰かが間違っていると知っていますか?これはバグですか、私は(ファイル所有者として)何かすべきですか?
function callGmailAPI_(message) {
var payload = createMimeMessage_(message);
var response = UrlFetchApp.fetch(
"https://www.googleapis.com/upload/gmail/v1/users/me/drafts?uploadType=media", {
method: "POST",
headers: {
"Authorization": "Bearer " + ScriptApp.getOAuthToken(),
"Content-Type": "message/rfc822",
},
muteHttpExceptions: true,
payload: payload
});
Logger.log(response.getResponseCode());
Logger.log(response.getContentText());
}
function encode_(subject) {
var enc_subject = Utilities.base64Encode(subject, Utilities.Charset.UTF_8);
return '=?utf-8?B?' + enc_subject + '?=';
}
function createMimeMessage_(msg) {
var nl = "\n";
var boundary = "__test_dot_com__";
var mimeBody = [
"MIME-Version: 1.0",
"To: " + msg.to.email,
"Cc: " + msg.cc.email,
"Subject: " + encode_(msg.subject),
"Content-Type: multipart/alternative; boundary=" + boundary + nl,
"--" + boundary,
"Content-Type: text/plain; charset=UTF-8",
"Content-Transfer-Encoding: base64" + nl,
Utilities.base64Encode(msg.body.text, Utilities.Charset.UTF_8) + nl,
"--" + boundary,
"Content-Type: text/html; charset=UTF-8",
"Content-Transfer-Encoding: base64" + nl,
Utilities.base64Encode(msg.body.html, Utilities.Charset.UTF_8) + nl
];
for (var i = 0; i < msg.files.length; i++) {
var attachment = [
"--" + boundary,
"Content-Type: " + msg.files[i].mimeType + '; name="' + msg.files[i].fileName + '"',
'Content-Disposition: attachment; filename="' + msg.files[i].fileName + '"',
"Content-Transfer-Encoding: base64" + nl,
msg.files[i].bytes
];
mimeBody.push(attachment.join(nl));
}
mimeBody.push("--" + boundary + "--");
return mimeBody.join(nl);
}