【问题标题】:Get Image URL from Google Drive to Google Sheet based on file name根据文件名从 Google Drive 获取图片 URL 到 Google Sheet
【发布时间】:2020-09-30 07:12:08
【问题描述】:

美好的一天!

我正在尝试访问 Google 云端硬盘,并根据网络应用程序的个人资料编号获取特定的图像文件。例如,如果我在 web 应用程序上输入个人资料编号和详细信息,提交后,它将在 google sheet 上附加详细信息,我试图在 Google Drive 中搜索图像并将其 URL 放在最后一列。

这是我的html代码:

  <body>
    <!-- CONTAINER -->
    <div class="container-md">

    <!-- HEADING -->
    <h3 style="color:green;">User Data</h3>

    <!-- CONTENT -->
    <div class="form-row">
    <div class="form-group col-md-2">
    <input id="rnum" class="form-control" type="text" placeholder="Profile Number" pattern="^\d{5}$" required>
    </div>
    </div>
    <!-- FULL NAME -->
    <div class="form-row">
    <div class="form-group col-md-3">
    <input id="fname" class="form-control" type="text" placeholder="First Name" required>
    </div>
    <div class="form-group col-md-3">
    <input id="mname" class="form-control" type="text" placeholder="Middle Name" required>
    </div>
    <div class="form-group col-md-3">
    <input id="lname" class="form-control" type="text" placeholder="Last Name" required>
    </div>
    </div> <!-- CLOSE ROW: FULL NAME-->
      <div class="form-row">
      <button id = "btn" type="submit" class="btn btn-primary">Submit</button>
      </div>
    </div>  <!-- CLOSE CONTAINER -->     
  </body>
</html>

这是我的 javascript 代码:

<script>
document.getElementById("btn").addEventListener("click",submitBtn);
    
    function submitBtn(){
       var myInfo={};
       
       myInfo.profile = document.getElementById("rnum").value;
       myInfo.firstName = document.getElementById("fname").value;
       myInfo.midName = document.getElementById("mname").value;
       myInfo.lastName = document.getElementById("lname").value;
       
       google.script.run.addInfo(myInfo);
       
       document.getElementById("rnum").value = "";
       document.getElementById("fname").value = "";
       document.getElementById("mname").value = "";
       document.getElementById("lname").value = "";
       
    }
</script>

这是我的谷歌脚本代码:

function addInfo(myInfo){
   const ss = SpreadsheetApp.openByUrl(url);
   const ws = ss.getSheetByName("User_Info");
  
   const imgFolder = DriveApp.getFoldersByName("User Image").next();
   const imgIterator = imgFolder.getFiles();
   
   var imgArr = [];

   while(imgIterator.hasNext()){
    var imgFile = imgIterator.next();
    var imgUrl = imgFile.getName();
     imgArr.push(imgUrl);
   }

   ws.appendRow([
     myInfo.profile, 
     myInfo.firstName, 
     myInfo.midName, 
     myInfo.lastName
     //Image URL
   ]);
}

到目前为止,我只能获取我的 Google Drive 文件夹中所有图像的文件名。我仍在寻找如何根据个人资料编号获取图像 URL 的方法。非常感谢您的帮助和意见。

【问题讨论】:

    标签: javascript image google-apps-script google-sheets google-drive-api


    【解决方案1】:

    如果profile numberDriveApp.getFoldersByName("User Image").next()文件夹中图片的文件名,每个文件名都是唯一的文件名,那么下面的修改呢?

    发件人:

    var imgArr = [];
    
    while(imgIterator.hasNext()){
     var imgFile = imgIterator.next();
     var imgUrl = imgFile.getName();
      imgArr.push(imgUrl);
    }
    
    ws.appendRow([
      myInfo.profile, 
      myInfo.firstName, 
      myInfo.midName, 
      myInfo.lastName
      //Image URL
    ]);
    

    收件人:

    var imgObj = {};
    while(imgIterator.hasNext()){
      var imgFile = imgIterator.next();
      imgObj[imgFile.getName()] = imgFile.getUrl();
    }
    ws.appendRow([
      myInfo.profile,
      myInfo.firstName,
      myInfo.midName,
      myInfo.lastName,
      imgObj[myInfo.profile]
    ]);
    
    • 在此修改中,创建了一个用于搜索 URL 的对象,并使用该对象放置 URL。

    注意:

    • 在这种情况下,我理解如下。
      • profile number 是图片的文件名。
      • 每个文件名都是唯一的文件名。

    如果以上我的理解不正确,你能提供你的情况的详细信息吗?通过这个,我想修改脚本。

    【讨论】:

    • 谢谢。是的,每个文件名都是唯一的。有效。非常感谢。
    • @Glenn Perey 感谢您的回复。很高兴您的问题得到解决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    • 2016-10-12
    • 2021-04-02
    相关资源
    最近更新 更多