如何在复制文件时根据 sheet 名称更改 google sheet 中单元格的值?

How to change the value of a cell in the google sheet based on the sheet name while duplicating the file?

我想在 google 驱动器文件夹中将源文件 (google sheet) 复制 100 次。这是我的脚本:

function copyfilefromsource() {
  var ui = SpreadsheetApp.getUi();
  var sheet_merge = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("List");
  var last_row = sheet_merge.getLastRow();
  var newsheet_firstname = null;
  var newsheet_surname = null;
  var newsheet_email = null;
  var source_folder = null;
  var file_owner = null;
  var dest_folder = null;
  var sheets_created = 0;
  var new_file = null;
  var source_file = null;
  var employee_id = null;
  var google_domain = null;
  var range = sheet_merge.getRange(1, 1, last_row, 4);
  var temp = null;
  source_file = DriveApp.getFileById(range.getCell(1, 2).getValue()); 
  dest_folder = DriveApp.getFolderById(range.getCell(2, 2).getValue()); 
    file_owner = range.getCell(3, 2).getValue();  
    google_domain = range.getCell(4, 2).getValue();   
  if (last_row <= 6) {
    SpreadsheetApp.getUi().alert("No rows to process!");
    return
  }
  for (var i = 7; i <= last_row; i++) { 
    if (range.getCell(i, 4).getValue() == '') {   
    employee_id = range.getCell(i, 1).getValue();       
    newsheet_email =  employee_id + google_domain;  
    newsheet_firstname = range.getCell(i, 2).getValue(); 
    newsheet_surname = range.getCell(i, 3).getValue();  
    new_file = source_file.makeCopy(employee_id, dest_folder);
    new_file.setOwner(file_owner);  
    new_file.addViewer(newsheet_email); 
    new_file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.EDIT);
    SpreadsheetApp.getActiveSheet().getRange(i,1).setFormula('=HYPERLINK("' + new_file.getUrl() +'/","'+employee_id+'")');
    SpreadsheetApp.getActiveSheet().getRange(i,4).setValue(new_file.getId());
    sheets_created++; 
    }
  }
  ui.alert(sheets_created + " files were created!")
}

function testFolder(folderName){
  var exist = true;
  try{var testFolder = DocsList.getFolder(folderName)}
  catch(err){exist=false}
  return exist;
}

只要我在 Column A 中输入 Employee ID(如上面的屏幕截图所示),该脚本就可以完美运行,它会自动创建重复文件并为 [=] 中的每个文件创建超链接15=]。

上面的截图是我要复制100次的源文件。但是,我希望脚本能够将单元格 B2 中的值更改为其各自的 sheet 名称(基于我的脚本,sheet 名称 = 员工 ID)。这意味着,当我打开第二个重复文件时,单元格 B2 中的值将是 10002 而不是 10001。当我打开第三个重复文件时,单元格 B2 中的值将是 10003 而不是 10001.

请问在复制文件时如何根据自己的 sheet 名称更改单元格 B2 中的值?任何帮助将不胜感激!

试试这个:

//...
//after this line of your code : 
new_file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.EDIT);
//add :
var id_ss = new_file.getId();
SpreadsheetApp.openById(id_ss).getSheets()[0].getRange(2, 2).setValue(employee_id);

提示:不要把它当作个人问题,但您的代码一团糟..您可以清理它;)