前提・実現したいこと
複合機で受信させたFAXをGmailに転送し、その中に含まれるPDFファイルをGoogleDriveに複製しアップロードさせたい。
又、Slackは利用していないため下記記載のコード内容のSlackへ通知以下は削りたい。
発生している問題・エラーメッセージ
Exception: DriveApp オブジェクトでの getFolderById メソッドまたはプロパティの取得中に予期しないエラーが発生しました。(行 3、ファイル「マクロ」)
該当のソースコード
function uploadFaxPDFtoDrive() { var folderId = '[YourGoogleSharedDriveId]'; var folder = DriveApp.getFolderById(folderId); var label = GmailApp.getUserLabelByName('アップロード済'); //FAXメールの抽出条件 var threads = GmailApp.search('subject:FAX filename:pdf has:nouserlabels', 0, 500); //対象のメールが存在しない場合は処理を終了 if(threads.length == 0) { console.log("新着メールなし"); return; } //Googleドライブに添付ファイルをアップロード try { threads.forEach(function(thread){ var messages = GmailApp.getMessagesForThread(thread); for(var i = 0; i < messages.length; i++) { //スレッドに既読メールが含まれる場合は処理をスキップ if(messages[i].isUnread()) { var attachments = messages[i].getAttachments(); for(var j = 0; j < attachments.length; j++){ folder.createFile(attachments[j]); } } } //アップロード済みのスレッドを既読にしてラベルを付ける thread.addLabel(label); thread.markRead(); }); //Slackへ通知 var botName = 'SlackBot'; var botIcon = ':fax:'; var slackWebhookURL = '[YourSlackWebhookURL]'; var slackMessage = 'FAXが届きました!\n' + 'https://drive.google.com/drive/folders/' + folderId; var jsonData = { "username" : botName, "icon_emoji" : botIcon, "text" : slackMessage }; var payload = JSON.stringify(jsonData); var options = { "method" : "post", "contentType" : "application/json", "payload" : payload }; UrlFetchApp.fetch(slackWebhookURL, options); }catch(e){ console.log(e); } }
試したこと
当方、こういった知識はほぼ皆無でネット上でやり方を色々調べてはみたものの・・・といった状態です。
無知な状態で手を出すなと言わればそれまでなのですが、何とか有識者様たちのお力を借りたく質問させていただきました。
補足情報(FW/ツールのバージョンなど)
追記:下記コードの出典元です。
https://note.com/w_yoshida/n/ne1e213cfb440
どこまでできるんでしょうか
届いたFAXのPDFはPC上でみることはできるんでしょうか
ご返信ありがとうございます。
はい。現状はFAX受信⇒Gmailへ転送が出来ており、PDFの閲覧も可能です
質問に記載されているコードは、ご自身で作成されたわけではないのでしょうか?
参考にされたWebサイト等があるのであれば、出典URLを質問に追記していただけないでしょうか。
すみません。補足情報欄に記載いたしました。
エラーが出てるfolderId のところは、ちゃんと ご自身の保存先としたいフォルダのIDを記述してますか?
ご指摘ありがとうございます。
すみません、そちら出来ておりませんでした
forlderIDの部分を先程GoogleDriveの保存先に書き換え試してみたところ、下記エラーが発生しました。
Exception: 使用しようとしている機能は、ドメイン管理者により無効にされています。
こちらの回避策などご存知でしたらご教授ください。
Gsuiteですかね? 可能性としては Slack通知の部分が 外部への接続ってことでセキュリティで制限されてるのでは?コード内の Slack通知の部分を削って試してみてはどうでしょうか。
Slack通知の部分をどう削っていいかわからないレベルなら、クラウドワークスあたりでお金をかけてきちんとサポート依頼することをお勧めします。
ご返信ありがとうございます。
セキュリティ上の制限でしたか・・・
Slack通知の部分は自身でも少し調べて色々試してみようと思います。
ありがとうございます。
Slack 通知はいらないと書かれていますので、出典元の 37行目から58行目を削除するとどうなりますか?
ご返信ありがとうございます。
試行してみたところ、下記エラーが発生してしまっており
folderIDの行でのエラーみたいでしたので、そもそも管理者側からこういったアクセスをブロックするように設定されているという認識でよろしいのでしょうか?
Exception: 使用しようとしている機能は、ドメイン管理者により無効にされています。(行 3、ファイル「マクロ」)
保存先として想定されてる GoogleDriveのフォルダは 会社?のだと思いますが、ご自身で作成されたフォルダですか?
あと、GAS実行されているブラウザは 会社のGsuiteアカウントと 個人のGmailと2つアカウントログインしてたりしますか?
あなたの回答
tips
プレビュー