File 复制文件时,如何根据工作表名称更改google工作表中单元格的值?

File 复制文件时,如何根据工作表名称更改google工作表中单元格的值?,file,google-apps-script,google-sheets,duplicates,filenames,File,Google Apps Script,Google Sheets,Duplicates,Filenames,我想在谷歌驱动器文件夹中复制源文件(谷歌工作表)100次。这是我的剧本: function copyfilefromsource() { var ui = SpreadsheetApp.getUi(); var sheet_merge = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("List"); var last_row = sheet_merge.getLastRow(); var newsh

我想在谷歌驱动器文件夹中复制源文件(谷歌工作表)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;
}
函数copyfilefromsource(){
var ui=SpreadsheetApp.getUi();
var sheet_merge=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“列表”);
var last_row=sheet_merge.getLastRow();
var newsheet_firstname=null;
var newsheet_姓氏=null;
var newsheet_email=null;
var source_folder=null;
var file_owner=null;
var dest_folder=null;
已创建的风险值=0;
var new_file=null;
var source_file=null;
var employee_id=null;
var google_domain=null;
var range=sheet\u merge.getRange(1,1,最后一行,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();
如果(最后一行尝试以下操作:

//...
//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);

小贴士:不要把它当成个人的,但你的代码乱七八糟……你可以把它清理干净;)

Hi Waxim,谢谢你的回复。很抱歉代码太乱了。我已经添加了你提供的代码。但是,它表明
new\u file.getSheets
不是一个函数。这是我运行脚本时出现的错误:
TypeError:new\u file.getSheets不是一个函数
你知道为什么它不工作吗?你说得对,我的错,makeCopy返回的是文件,而不是我想象中的电子表格。我编辑了anwserThanks Waxim,现在它工作得很好!因此基本上,对于创建的每个工作表,您希望在单元格中设置其id
B2