javascript 将filename添加到导入的第一列

yb3bgrhw  于 2022-12-21  发布在  Java
关注(0)|答案(1)|浏览(107)

我有文件夹上的文件,我将它们导入谷歌表。我需要添加文件名到第一列导入前,但我的脚本只添加到第一个单元格导入前
所以它给了我:
| | |
| - ------| - ------|
| 文件名|铅笔|
| 2022年1月1日|笔|
| 2022年2月1日|帽子|
我需要
| | | |
| - ------| - ------| - ------|
| 文件名|2022年1月1日|铅笔|
| 文件名|2022年1月1日|笔|
| 文件名|2022年2月1日|帽子|

function Import_Kredo() {
 
  var arr = [];
  var files = DriveApp.getFolderById("13kymSiqX0-L6a9ev4It1_BEjH-xM8rnc").getFiles();
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var copySheet = ss.getSheetByName("Table 1");
  copySheet.getRange('A2:G').clear();
  while (files.hasNext()) {
    var file = files.next();
    var mimeType = file.getMimeType();
    var ss1 = null, id = null;
    if (mimeType == MimeType.MICROSOFT_EXCEL) {
      id = Drive.Files.copy({ mimeType: MimeType.GOOGLE_SHEETS }, file.getId()).id;
      ss1 = SpreadsheetApp.openById(id);
    } else if (mimeType == MimeType.GOOGLE_SHEETS) {
      ss1 = SpreadsheetApp.open(file);
    }
    if (!ss1) continue;
    var sheet = ss1.getSheetByName("Table 1");
    if (!sheet) continue;
    var sheetsRange = sheet.getDataRange();
    var sheetsValues = sheetsRange.getValues().filter(r => r[1]).filter(e => e);
    var v = sheetsValues.slice(1);
    console.log([file.getName(), v])
    arr = arr.concat([[file.getName(), ...Array(v[0].length - 1).fill(null)], ...v]);
    if (id) DriveApp.getFileById(id).setTrashed(true); // or Drive.Files.remove(id);
  }
  copySheet.getRange(5, 1, arr.length, arr[0].length).setValues(arr);
}
yi0zb3m4

yi0zb3m41#

在你的情况下,下面的修改怎么样?

发件人:

arr = arr.concat([[file.getName(), ...Array(v[0].length - 1).fill(null)], ...v]);

收件人:

var filename = file.getName();
arr = arr.concat(v.map(e => [filename, ...e]));
  • 通过这种修改,文件名被放入每行的第1列。

相关问题