添付ファイル付きの Gmail で下書きを作成することを目的とした Google スプレッドシート ファイルにバインドされたスクリプトがあります (スクリプトは以下に添付されています。これは他の Web から入手しました)。これには、他のユーザーがスクリプトと Google 開発者コンソールの両方で Gmail API を有効にする必要があります。
ファイルの所有者として、私はそれを問題なく行うことができます。ただし、他のユーザーが 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);
}