javascript - Google Script - 从电子表格中列出的文件名导入文件数据

标签 javascript google-apps-script

对此很陌生,但我过去的修修补补非常幸运。然而,我真的坚持这一点。

希望将文件数据导入特定工作表。使用特定的文件名,我已经成功地使用了这个脚本:

  function importVauto() {

  var app = SpreadsheetApp;
  var import1 = app.getActiveSpreadsheet().getSheetByName('Import1');

  var file = DriveApp.getFilesByName("samplefilename").next();
  var csvData = Utilities.parseCsv(file.getBlob().getDataAsString());
  import1.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);

  }  

挑战在于,文件名每周都会更改。我的想法是在电子表格中列出所需的文件名,引用包含文件名的单元格,然后导入所需的文件。试过这个:

function importVauto() {

  var app = SpreadsheetApp;
  var import1 = app.getActiveSpreadsheet().getSheetByName('Import1');
  var data = app.getActiveSpreadsheet().getSheetByName('Data');

  var name = data.getRange("C24")
  name.getValues()
  Logger.log(name)

  var file = DriveApp.getFilesByName(name).next();
  var csvData = Utilities.parseCsv(file.getBlob().getDataAsString());
  import1.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);

} 

使用 var 'name' 作为 DriveApp.getFilesByName() 的文件名似乎有问题,但很有可能,我遗漏了很多东西(不知道你不知道什么)。

希望这个问题是有道理的(更希望有一个简单的解决方案)。同样,对此非常陌生。感谢任何反馈。

最佳答案

这个修改怎么样?

修改点:

  • getValues() 返回二维数组。如果要检索一个单元格“C24”的值,可以使用getValue()。在这种情况下,您可以直接检索单元格的字符串值。

修改后的脚本:

从 :
name.getValues();
到 :
name = name.getValue();

name = name.getValues()[0][0];

注意事项:

  • 当您使用 DriveApp.getFilesByName(name).next() 检索 file 时;如果有多个具有相同文件名的文件,则只能检索其中一个。请注意这一点。

引用:

如果这不是您想要的,请告诉我。我想修改我的答案。

关于javascript - Google Script - 从电子表格中列出的文件名导入文件数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50891893/

相关文章:

javascript - 单击按钮时如何生成一组数组而不消失第一个数组?

javascript - 滚动到输入字段但偏移固定导航?

google-apps-script - 从 Google App 脚本中的 doPost 返回 500 错误

javascript - 在 Google Script 中转义花括号

javascript - MySQL UPDATE 只更新整数,不更新字符串

javascript - 如何在 Mongoose 中推送元素父级?

javascript - 为什么浏览器在 html 中创建了两个 div 但代码只说了一个?

javascript - 将 Gmail 放入 Google 表格中

javascript - 在 Google 表格中输入数据后自动保护单元格/范围

google-apps-script - 遍历范围,将字符串附加到每个范围