【问题标题】:How do I get a filename from a column of URL's in google sheets如何从谷歌表格中的 URL 列中获取文件名
【发布时间】:2019-03-02 22:59:17
【问题描述】:

我什至无法开始记录我试图弄清楚这一点所花费的时间,尽管在整个过程中自学如何编码非常有启发性。

任何人都可以使用 Diego 的代码(参见此处:Get filename from url google sheet)来获取非电子表格文件的名称吗?我已经在我有限的知识范围内做了所有事情,我非常卡住。

我基本上在电子表格上有一列 URL,我想要一个脚本来从中获取文件名。由于 ID 保持静态但文件名可以更改,我希望能够拥有与静态 ID 对应的第二列“更新”文件名。

我已附上工作表的链接以供参考。非常感谢任何能对此有所了解的人!

https://docs.google.com/spreadsheets/d/1pBSGc92tGj0l-JlhQznsGfGT1Nfj2LqNN7pyM4M_69c/edit#gid=2015441637

【问题讨论】:

  • 你能添加你当前的脚本并解释你的脚本问题吗?我认为这样可以帮助用户思考你的问题和解决方案。
  • 您好田池,谢谢您的回复!我出城工作,刚刚回到地球。今天下午我会把一些东西放在一起作为上下文。

标签: google-apps-script google-sheets


【解决方案1】:

从 URls 获取文件名

function getIdFromUrl(url) { 
  return url.match(/[-\w]{25,}/); 
}

function getFileNames() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Data');
  var rg1=sh.getRange(2,4,getColumnHeight(4,sh,ss)-1,1);//current column of urls
  var vA1=rg1.getValues();
  var rg2=sh.getRange(2,5,getColumnHeight(4,sh,ss)-1,1);//new column of file names
  var vA2=rg2.getValues();
  for(var i=0;i<vA1.length;i++){
    vA2[i][0]=DriveApp.getFileById(getIdFromUrl(vA1[i][0])).getName();
  }
  rg2.setValues(vA2);
}

function getColumnHeight(col,sh,ss){
  var ss=ss || SpreadsheetApp.getActive();
  var sh=sh || ss.getActiveSheet();
  var col=col || sh.getActiveCell().getColumn();
  var lastrow=sh.getLastRow();
  if(lastrow==0)return 0;
  var rg=sh.getRange(1,col,lastrow,1);
  var vA=rg.getValues();
  while(vA.length>0 && vA[vA.length-1][0].length==0){
    vA.splice(vA.length-1,1);
  }
  return vA.length;
}

【讨论】:

  • 库珀,这成功了!喜欢完美。 Tanaike 建议我发布当前脚本以获得更多上下文,所以我很快就会回来。我认为这是你会挖掘的东西。
  • Cooper,@Tanaike,请查看下面更新的电子表格链接。我已经包含了一个自述文件来解释每个步骤。如果您对我有任何跟进,请告诉我,并感谢您深入了解! docs.google.com/spreadsheets/d/…
猜你喜欢
  • 1970-01-01
  • 2023-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-11
  • 2021-11-01
  • 1970-01-01
相关资源
最近更新 更多