久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

刪除 Google 表單提交的文件

Remove Google Form Submitted File(刪除 Google 表單提交的文件)
本文介紹了刪除 Google 表單提交的文件的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

此處的工作代碼:

  • Google 生成的文件夾.文件提交到這個文件夾.

  • 新文件夾中的重命名文件.原始文件從上面的文件夾中刪除.

  • 原始文件現在顯示在云端硬盤中,而不是在文件夾中,而是在文件夾中.此文件的名稱與最初上傳的相同.進入passes"文件夾然后從該文件夾中刪除的那個.

  • 片段

    //重命名通行證if (itemResponses[f].getItem().getTitle() == "PASSES") {var 文件 = itemResponses[f].getResponse();//Logger.log(files.length);if (files.length > 0) {for (var n in files) {var dFile = DriveApp.getFileById(files[n]);dFile.setName("LSS - " + year + " - " + teamName + " - " + "PASSES - " + 今天);teamFolder.addFile(dFile);//將提交的文件移動到該文件夾passFolder.removeFile(dFile);//從提交文件夾中刪除DriveApp.getRootFolder().removeFile(dFile)//(不起作用)從驅動器文件夾中刪除DriveApp.removeFile(dFile)//(不工作)從驅動器文件夾中刪除}}

    完整代碼

    函數 getLastResponse() {var form = FormApp.openById('ID');var today = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "MM/dd/yyyy hh:mm a");var year = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "YYYY");Logger.log(今天);var formResponses = form.getResponses();//Logger.log(formResponses.length);var formResponse = formResponses[formResponses.length-1];var respondentEmail = formResponse.getRespondentEmail()var itemResponses = formResponse.getItemResponses();Logger.log(itemResponses.length);var teamName = itemResponses[2].getResponse();//Logger.log("團隊名稱:" + teamName);//檢查文件夾var dropbox = "Lititz Summer Showcase Team Check In (文件回復)";var 文件夾,文件夾 = DriveApp.getFoldersByName(dropbox);var teamBox = 團隊名稱;var teamFolder, teamFolders = DriveApp.getFoldersByName(teamBox);var passFolder = DriveApp.getFolderById('ID');var rosterFolder = DriveApp.getFolderById('ID');var teamInfoFolder = DriveApp.getFolderById('ID');var permissionToTravelFolder = DriveApp.getFolderById('ID');if (folders.hasNext()) {//檢查驅動器是否有文件夾文件夾 = 文件夾.next();} else {//如果不創建文件夾文件夾 = DriveApp.createFolder(dropbox);}if (teamFolders.hasNext()) {//檢查團隊是否存在文件夾團隊文件夾 = 團隊文件夾.next();} else {//如果不創建文件夾teamFolder = 文件夾.createFolder(teamBox);teamFolder.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.COMMENT);}for (var f = 0; f < itemResponses.length; f++) {Logger.log(itemResponses[f].getItem().getType());Logger.log(itemResponses[f].getItem().getTitle());if (itemResponses[f].getItem().getType() == "FILE_UPLOAD") {Logger.log("有一個文件上傳");//重命名通行證if (itemResponses[f].getItem().getTitle() == "PASSES") {var 文件 = itemResponses[f].getResponse();//Logger.log(files.length);if (files.length > 0) {for (var n in files) {var dFile = DriveApp.getFileById(files[n]);dFile.setName("LSS - " + year + " - " + teamName + " - " + "PASSES - " + 今天);teamFolder.addFile(dFile);//將提交的文件移動到該文件夾passFolder.removeFile(dFile);//從提交文件夾中刪除DriveApp.removeFile(dFile);//從驅動器文件夾中刪除}}//重命名名冊} else if (itemResponses[f].getItem().getTitle() == "ROSTER") {var 文件 = itemResponses[f].getResponse();//Logger.log(files.length);if (files.length > 0) {for (var n in files) {var dFile = DriveApp.getFileById(files[n]);dFile.setName("LSS - " + year + " - " + teamName + " - " + "ROSTER - " + 今天);teamFolder.addFile(dFile);}}//重命名團隊信息表} else if (itemResponses[f].getItem().getTitle() == "TEAM INFO SHEET") {var 文件 = itemResponses[f].getResponse();//Logger.log(files.length);if (files.length > 0) {for (var n in files) {var dFile = DriveApp.getFileById(files[n]);dFile.setName("LSS - " + year + " - " + teamName + " - " + "TEAM INFO SHEET - " + 今天);teamFolder.addFile(dFile);}}//重命名旅行許可} else if (itemResponses[f].getItem().getTitle() == "PERMISSION TO TRAVEL") {var 文件 = itemResponses[f].getResponse();//Logger.log(files.length);if (files.length > 0) {for (var n in files) {var dFile = DriveApp.getFileById(files[n]);Logger.log(ownerEmail);dFile.setName("LSS - " + year + " - " + teamName + " - " + "旅行許可 - " + 今天);teamFolder.addFile(dFile);}}}}//END '如果文件上傳'}//結束循環}//結束函數

    解決方案

    這個答案怎么樣?

    問題:

    從谷歌表單上傳的流程如下.

    1. 在表單中上傳文件時,文件會創建到根文件夾.
    2. 提交表單時,通過將文件名重命名為表單創建的文件夾來復制根文件夾中的文件.

    在上述情況下,根文件夾中的文件與 Google Form 創建的文件夾中的文件不同.這樣,您的SNIPPET"中的 DriveApp.getRootFolder().removeFile(dFile) 不起作用.這就是你的腳本問題的原因.

    解決方法:

    • 您要刪除保留在根文件夾中的文件.

    為了刪除根文件夾中創建的文件,這個解決方法怎么樣?

    很遺憾,無法從表單響應中檢索到原始文件名.但是復制到表單創建的文件夾中的文件的文件名格式為 {original filename} - ####.{extension}.在此解決方法中,從該文件名中檢索原始文件名,并使用檢索到的原始文件名將文件移動到回收站.

    示例腳本:

    此示例腳本由可安裝的表單提交觸發器運行.因此,當表單提交時,腳本運行并將上傳的文件移動到目標文件夾,并將根文件夾中的原始文件移動到垃圾箱.

    在運行腳本之前:

    在此示例腳本中,假設該腳本是 Google Form 的容器綁定腳本.請注意這一點.

    1. 將腳本粘貼到腳本編輯器后,請將目標文件夾ID設置為腳本.
    2. 請安裝可安裝的表單提交觸發器.如果觸發器已安裝,請將其移除并重新安裝.
    3. 請使用 Google 表單上傳并提交文件.這樣,腳本就會運行.

    腳本:

    函數formsubmit(e) {var destFolderId = "###";//目標文件夾 ID如果(e){實用程序.sleep(3000);//這是必需的.var destfolder = DriveApp.getFolderById(destFolderId);var items = e.response.getItemResponses();for (var i = 0; i < items.length; i++) {if (items[i].getItem().getType() == "FILE_UPLOAD") {var files = items[i].getResponse();for (var j = 0; j < files.length; j++) {var file = DriveApp.getFileById(files[j]);var 文件名 = file.getName();//將上傳的文件移動到目標文件夾.var uploadFile = DriveApp.getFileById(files[j]);var sourcefolder = uploadFile.getParents().next();destfolder.addFile(文件);源文件夾.removeFile(文件);//獲取原始文件名.var p1 = 文件名.split(" - ");var extension = p1[p1.length - 1];p1.pop();var name = p1.join(" - ");變種 p2 = "";if (extension.indexOf(".") > -1) {p2 = "."+ extension.split(".")[1];}var orgFilename = 名稱 + p2;//將上傳的文件移動到垃圾箱.var orgFiles = DriveApp.getRootFolder().getFilesByName(orgFilename);if (orgFiles.hasNext()) {var orgFile = orgFiles.next();orgFile.setTrashed(true);}}}}} 別的 {throw new Error("此示例腳本由可安裝的表單提交觸發器運行.");}}

    注意:

    • 這是一個解釋此解決方法的簡單示例腳本.因此,請根據您的情況進行修改.
    • 在我的環境中,發現 Utilities.sleep(3000) 是必需的.上傳文件并復制文件后,將運行可安裝的表單提交觸發器.此時,如果不使用Utilities.sleep(3000),則在復制文件完成之前移動文件.由此,發生錯誤.所以我用了它.
      • 但我不確定 3 秒的等待時間是否最好.所以如果在你的環境中出現錯誤,請修改這個.
      • 我認為當上傳大文件時,這個值可能需要很大.或者我認為通過時間驅動的觸發器運行腳本可能會更好.
    • 在這個示例腳本中,我使用了可安裝的表單提交觸發器.并且當表單提交時,根文件夾中的原始文件被移動到垃圾箱.
      • 但我認為你也可以通過時間驅動的觸發器來運行腳本.在這種情況下,您可以通過打開表單來檢索響應項.關于這一點,請根據您的情況進行選擇.

    參考資料:

    • 可安裝觸發器
    • setTrashed(trashed)
    • 睡眠(毫秒)

    WORKING CODE HERE: https://jsfiddle.net/nateomardavis/e0317gb6/

    ORIGINAL QUESTION BELOW

    How do I remove a form-submitted file from Drive itself?

    I'm having trouble sorting out why a google form is submitting files to both my drive (not in a folder) but also into an auto-generated submission folder.

    I've been able to move the renamed file to a new folder and delete the copy in the auto-generated submission folder. I cannot figure out how to remove the copy that's just listed in "Drive", not in any folder.

    THE PROCESS (EDIT)

    Let me try to explain the process more. I have a form that collects files. Google automatically makes a folder and sub-folders. I have successfully renamed the submitted files, moved them to a new folder, and deleted them from the Google-generated folder. However, a copy of the original, unchanged file is going to Google Drive, the root folder. Steps 1-3 (below) work as expected. Step 4 is where I'm running into issues.

    1. The original file being uploaded to a form. Note the file name.

    2. The Google-generated folder. The file is submitted this folder.

    3. The renamed file in a new folder. The original file is deleted from the folder above.

    4. The original file is now showing up in Drive, not in a folder but there. The name of this file is the same as the originally uploaded one. The one which went to the "passes" folder and was then deleted from that folder.

    SNIPPET

    //RENAME PASSES
    if (itemResponses[f].getItem().getTitle() == "PASSES") { 
    var files = itemResponses[f].getResponse();
    //Logger.log(files.length);
    if (files.length > 0) {
      for (var n in files) {
        var dFile = DriveApp.getFileById(files[n]);
        dFile.setName("LSS - " + year + " - " + teamName + " - " + "PASSES - " + today );
        teamFolder.addFile(dFile);   //MOVE SUBMITTED DOCUMENTS TO THAT FOLDER
        passesFolder.removeFile(dFile); //REMOVE FROM SUBMISSION FOLDER
        DriveApp.getRootFolder().removeFile(dFile) // (DOES NOT WORK) REMOVE FROM DRIVE FOLDER
        DriveApp.removeFile(dFile) // (DOES NOT WORK) REMOVE FROM DRIVE FOLDER
      }
    }
    

    FULL CODE

    function getLastResponse() {
    
      var form = FormApp.openById('ID');
    
      var today = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "MM/dd/yyyy hh:mm a");
      var year = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "YYYY");
      Logger.log(today);
    
      var formResponses = form.getResponses();
      //Logger.log(formResponses.length);
      var formResponse = formResponses[formResponses.length-1];
      var respondentEmail = formResponse.getRespondentEmail()
      var itemResponses = formResponse.getItemResponses();
      Logger.log(itemResponses.length);
      var teamName = itemResponses[2].getResponse();
      //Logger.log("team name: " + teamName);
    
    
      //CHECK FOLDERS
       var dropbox = "Lititz Summer Showcase Team Check In (File responses)";
        var folder, folders = DriveApp.getFoldersByName(dropbox);
    
        var teamBox = teamName;
        var teamFolder, teamFolders = DriveApp.getFoldersByName(teamBox);
    
        var passesFolder = DriveApp.getFolderById('ID');
        var rosterFolder = DriveApp.getFolderById('ID');
        var teamInfoFolder = DriveApp.getFolderById('ID');
        var permissionToTravelFolder = DriveApp.getFolderById('ID');
    
        if (folders.hasNext()) { //CHECK IF DRIVE HAS FOLDER FOR FORM
          folder = folders.next();
        } else { //IF NOT CREATE FOLDER
          folder = DriveApp.createFolder(dropbox);
        }
    
        if (teamFolders.hasNext()) {  //CHECK IF FOLDER FOR TEAM EXISTS 
          teamFolder = teamFolders.next();
        } else { //IF NOT CREATE FOLDER
          teamFolder = folder.createFolder(teamBox);
          teamFolder.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.COMMENT);
        }
    
    for (var f = 0; f < itemResponses.length; f++) {
        Logger.log(itemResponses[f].getItem().getType());
        Logger.log(itemResponses[f].getItem().getTitle());
      if (itemResponses[f].getItem().getType() == "FILE_UPLOAD") {
        Logger.log("THERE IS A FILE UPLOAD");
    
        //RENAME PASSES
        if (itemResponses[f].getItem().getTitle() == "PASSES") { 
        var files = itemResponses[f].getResponse();
        //Logger.log(files.length);
        if (files.length > 0) {
          for (var n in files) {
            var dFile = DriveApp.getFileById(files[n]);
            dFile.setName("LSS - " + year + " - " + teamName + " - " + "PASSES - " + today );
            teamFolder.addFile(dFile);   //MOVE SUBMITTED DOCUMENTS TO THAT FOLDER
            passesFolder.removeFile(dFile); //REMOVE FROM SUBMISSION FOLDER
            DriveApp.removeFile(dFile); // REMOVE FROM DRIVE FOLDER
          }
        }
        //RENAME ROSTER
        } else if (itemResponses[f].getItem().getTitle() == "ROSTER") {
          var files = itemResponses[f].getResponse();
        //Logger.log(files.length);
        if (files.length > 0) {
          for (var n in files) {
            var dFile = DriveApp.getFileById(files[n]);
            dFile.setName("LSS - " + year + " - " + teamName + " - " + "ROSTER - " + today );
            teamFolder.addFile(dFile);
    
          }
        }
       //RENAME TEAM INFO SHEET
       } else if (itemResponses[f].getItem().getTitle() == "TEAM INFO SHEET") {
          var files = itemResponses[f].getResponse();
        //Logger.log(files.length);
        if (files.length > 0) {
          for (var n in files) {
            var dFile = DriveApp.getFileById(files[n]);
            dFile.setName("LSS - " + year + " - " + teamName + " - " + "TEAM INFO SHEET - " + today );
            teamFolder.addFile(dFile);
          }
        }
    
      //RENAME PERMISSION TO TRAVEL
      } else if (itemResponses[f].getItem().getTitle() == "PERMISSION TO TRAVEL") {
          var files = itemResponses[f].getResponse();
        //Logger.log(files.length);
        if (files.length > 0) {
          for (var n in files) {
            var dFile = DriveApp.getFileById(files[n]);
            Logger.log(ownerEmail);
            dFile.setName("LSS - " + year + " - " + teamName + " - " + "PERMISSION TO TRAVEL - " + today );
            teamFolder.addFile(dFile);
          }
        }
        }
    }//END 'IF FILE UPLOAD'
    }//END FOR LOOP
    
    
    }//END FUNCTION
    

    解決方案

    How about this answer?

    Issue:

    The flow of upload from Google Form is as follows.

    1. When the file is uploaded in the Form, the file is created to root folder.
    2. When the form is submitted, the file in the root folder is copied by renaming the filename to the folder created by the form.

    In above case, the file in root folder is different from the file in the folder created by Google Form. By this, DriveApp.getRootFolder().removeFile(dFile) in your "SNIPPET" didn't work. This is the reason of your issue of script.

    Workaround:

    • You want to delete the file remained in the root folder.

    In order to delete the file created in the root folder, how about this workaround?

    Unfortunately, the original filename cannot be retrieved from the form response. But the file which was copied to the folder created by the form has the filename of the format like {original filename} - ####.{extension}. In this workaround, the original filename is retrieved from this filename, and move the file to the trash using the retrieved original filename.

    Sample script:

    This sample script is run by the installable form submit trigger. So when the form was submitted, the script is run and the uploaded file is moved to the destination folder and the original file in the root folder is moved to the trash.

    Before run the script:

    In this sample script, it supposes that the script is the container-bound script of Google Form. Please be careful this.

    1. After cope and paste the script to the script editor, please set the destination folder ID to the script.
    2. please install the installable form submit trigger. If the trigger has already been installed, please remove it and install again.
    3. Please upload and submit a file using Google Form. By this, the script is run.

    Script:

    function formsubmit(e) {
      var destFolderId = "###"; // Destination folder ID
    
      if (e) {
        Utilities.sleep(3000); // This is required.
        var destfolder = DriveApp.getFolderById(destFolderId);
        var items = e.response.getItemResponses();
        for (var i = 0; i < items.length; i++) {
          if (items[i].getItem().getType() == "FILE_UPLOAD") {
            var files = items[i].getResponse();
            for (var j = 0; j < files.length; j++) {
              var file = DriveApp.getFileById(files[j]);
              var filename = file.getName();
    
              // Move uploaded file to the destination folder.
              var uploadedFile = DriveApp.getFileById(files[j]);
              var sourcefolder = uploadedFile.getParents().next();
              destfolder.addFile(file);
              sourcefolder.removeFile(file);
    
              // Retrieve original filename.
              var p1 = filename.split(" - ");
              var extension = p1[p1.length - 1];
              p1.pop();
              var name = p1.join(" - ");
              var p2 = "";
              if (extension.indexOf(".") > -1) {
                p2 = "." + extension.split(".")[1];
              }
              var orgFilename = name + p2;
    
              // Move uploaded file to the trash.
              var orgFiles = DriveApp.getRootFolder().getFilesByName(orgFilename);
              if (orgFiles.hasNext()) {
                var orgFile = orgFiles.next();
                orgFile.setTrashed(true);
              }
            }
          }
        }
      } else {
        throw new Error("This sample script is run by the installable form submit trigger.");
      }
    }
    

    Note:

    • This is a simple sample script for explaining this workaround. So please modify this for your situation.
    • In my environment, it was found Utilities.sleep(3000) was required. When the file is uploaded and the file is copied, the installable form submit trigger is run. At this time, if Utilities.sleep(3000) is not used, the file is moved before copying file is completed. By this, an error occurs. So I used it.
      • But I'm not sure whether the wait time of 3 seconds is the best. So if in your environment, an error occurs, please modify this.
      • I think that when a large file is uploaded, this value might be required to be large. Or also I think that running the script by the time-driven trigger might be better.
    • In this sample script, I used the installable form submit trigger. And when the form is submitted, the original file in the root folder is moved to the trash.
      • But I think that you can also run the script by the time-driven trigger. In this case, you can retrieve the response items by opening the form. About this, please select for your situation.

    References:

    • Installable Triggers
    • setTrashed(trashed)
    • sleep(milliseconds)

    這篇關于刪除 Google 表單提交的文件的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

    【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

    相關文檔推薦

    discord.js v12: How do I await for messages in a DM channel?(discord.js v12:我如何等待 DM 頻道中的消息?)
    how to make my bot mention the person who gave that bot command(如何讓我的機器人提及發出該機器人命令的人)
    How to fix Must use import to load ES Module discord.js(如何修復必須使用導入來加載 ES 模塊 discord.js)
    How to list all members from a specific server?(如何列出來自特定服務器的所有成員?)
    Discord bot: Fix ‘FFMPEG not found’(Discord bot:修復“找不到 FFMPEG)
    Welcome message when joining discord Server using discord.js(使用 discord.js 加入 discord 服務器時的歡迎消息)
    主站蜘蛛池模板: av中文在线 | 成人免费视频网站在线观看 | 日韩一区二区在线视频 | 伊人亚洲| www.久久.com| 成人影院在线视频 | 久久久精品久久久 | 日日操天天射 | 狠狠狠干 | 欧美日韩a | 久久99国产精品久久99果冻传媒 | 天天天操操操 | 国产精品久久久久久久久久东京 | 国产一区二区三区久久 | 欧美精品一区在线 | 欧美精品二区三区 | 国产网站在线免费观看 | 99热这里都是精品 | 日韩精品一区二区三区在线播放 | 国产精品日日做人人爱 | 久久国产欧美日韩精品 | 日本精品一区二区 | 国产精品99久久免费观看 | 欧美高清成人 | 中文字幕日韩欧美一区二区三区 | 亚洲男女视频在线观看 | 一区二区三区四区在线 | 国户精品久久久久久久久久久不卡 | 日韩中文字幕在线视频观看 | 亚洲 日本 欧美 中文幕 | 久久久日韩精品一区二区三区 | 欧美男人天堂 | 日韩av一区二区在线观看 | 婷婷在线免费 | 一区二区三区在线 | 黄色毛片黄色毛片 | 美女在线观看国产 | 色综合桃花网 | 99精品久久久 | 亚洲免费在线 | 91精品久久久久 |