如何在复制文件时根据 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);
提示:不要把它当作个人问题,但您的代码一团糟..您可以清理它;)
我想在 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);
提示:不要把它当作个人问题,但您的代码一团糟..您可以清理它;)