0

添付ファイル付きの 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);
}
4

1 に答える 1

0

このスレッドに基づくと、これはデュアル アカウント アクセスが原因である可能性があります。他のすべてのアカウントをログアウトして、1 つのアカウントだけにログインしてみてください。それでも問題が解決しない場合は、別のアカウントでログインして、もう一度試してください。

次の関連する問題を確認してください。

あなたの特定の問題に関しては、新しいコンソール古いコンソールの両方で、別のブラウザを試して、すべてからログアウトしてみます。

お役に立てれば!

于 2016-07-19T15:50:29.420 に答える