

現在Googleフォームでアップロード機能を使ったフォームの運用を考えています。

まずGoogleフォームの仕様ですが  
送信前に回答者がファイルのアップロードを行った時点で  
回答者がオーナーのファイルが回答者のドライブ(直下)に保存されます。

その後フォームを送信すると  
フォーム作成者側のドライブのファイル保存場所に  
フォーム作成者側がオーナーのアップロードファイルが保存されます。

そこでですが、このままですと  
回答者が意識してフォーム送信後に  
自分のドライブ直下にアップされたファイルを消していかないと  
ドライブ直下にアップロードファイルが溜まり続ける状態となってしまうため  
なんとかGASやその他の手段(あれば)を用いて  
フォーム送信後に回答者のアップロードファイルを削除したいと考えております。

現状、インターネットや書籍を参考に、フォームのGASでは以下のように  
回答内容を取得してメールを送信するプログラムを書いております。

[code]

    function noticeFileUpload(e) {
        var itemResponses = e.response.getItemResponses();
    
        for (var i = 0; i < itemResponses.length; i++) { 
            var itemResponse = itemResponses[i]; 
            var question = itemResponse.getItem().getTitle(); 
            var answer = itemResponse.getResponse();
    
            Logger.log(question);
            Logger.log(answer);
    
            if(question == "提出書類"){
                var fileId = answer;
                var file = DriveApp.getFileById(fileId);
    
                var address = 'メールアドレス'; 
                var title = '【Google Form送信テスト】ファイルがアップロードされました'; 
                var content = 'ファイルがアップロードされました。\n\n'
                + 'ファイル名：' + file.getName()
                + '\n\n'
                + '※このメールはGoogleフォームからの自動送信メールです。'; 
    
                GmailApp.sendEmail(address, title, content);
            }
        }
    }
    
[/code]

このように、回答内容を取得するコードはわかるのですが  
回答者が自分のドライブにアップしたファイルを取得する具体的なコードがわかりません。

回答内容で保存されたファイルの名前から、自動付加された後ろのアカウント名を削除し  
同じ名前のファイルをドライブ直下から検索→削除といった処理をしなければならないのでしょうか。  
（その場合、既に同じ名前のファイルがあった場合などの対応も気がかりです）

すいませんがご教授いただけると助かります。  
よろしくお願いいたします。


CC BY-SA 4.0
2019-03-05T05:56:41.753
53202
2019-03-05T06:30:00.343
2019-03-05T06:30:00.343
32411
32411
question
google-apps-script
Googleフォームのアップロード機能でアップした回答者のファイルをフォーム送信後に削除したい


結論から言えば、可能です。

以下のドキュメントを読めば、やり方の一助になります。

[Forms Service | Apps Script | Google
Developers](https://developers.google.com/apps-script/reference/forms/)  
[Drive Service | Apps Script | Google
Developers](https://developers.google.com/apps-script/reference/drive/)

Google Apps
Script自体の書き方については、ご自身で勉強していただくしかないのが実情でありますが、ES5をベースとして、インターネット上や書籍にも多数の情報があり、比較的入門者にも学びやすい言語であるため、頑張ってください。  
[Overview of Google Apps Script | Apps Script | Google
Developers](https://developers.google.com/apps-script/overview)  
[【保存版】初心者向け実務で使えるGoogle Apps Script完全マニュアル](https://tonari-it.com/google-apps-
script-manual/)

### 追記 2019-03-05_15-29-37

Google Form側のWebクライアントの機能で、回答結果をスプレッドシートに書き込むことが出来ます（新しい回答も自動的に追記・編集されていきます）。

そして、このスプレッドシートには回答者がアップロードしたファイルのGoogle
Drive側のURLも回答の項目として記載されているため、このURLからファイルのIDを取得、 `DriveApp.getFileById`
を利用して[File](https://developers.google.com/apps-
script/reference/drive/file)を取得し、後は `File.getParents`
で親[Folder](https://developers.google.com/apps-
script/reference/drive/folder)を取得することで`Folder.removeFile`を実行して実際にファイルを削除することが出来ます。


CC BY-SA 4.0
2019-03-05T06:06:13.723
53205
2019-03-05T06:29:45.893
2019-03-05T06:29:45.893
29826
29826
53202
answer