Google apps script 使用脚本批量编辑文件夹中图纸中的单元格范围
我过去曾使用此脚本在特定文件夹(使用源文件)中编辑一组电子表格中的一个单元格或一系列单元格,但当我运行此脚本时,它不起作用。实际上,它不是从源工作表复制范围,而是清除目标工作表中的现有数据 以下是我一直在使用的脚本:Google apps script 使用脚本批量编辑文件夹中图纸中的单元格范围,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我过去曾使用此脚本在特定文件夹(使用源文件)中编辑一组电子表格中的一个单元格或一系列单元格,但当我运行此脚本时,它不起作用。实际上,它不是从源工作表复制范围,而是清除目标工作表中的现有数据 以下是我一直在使用的脚本: var files = DriveApp.getFolderById("1NNHFL6fMFz-LwJ4tZrvTN92foXhf7VS8").getFiles() while (files.hasNext()) { var file
var files = DriveApp.getFolderById("1NNHFL6fMFz-LwJ4tZrvTN92foXhf7VS8").getFiles()
while (files.hasNext()) {
var file = files.next();
var shoot = SpreadsheetApp.openById(file.getId());
var sourcesheet = SpreadsheetApp.getActive().getSheetByName("Sheet1");
var sourcerange = sourcesheet.getRange('A:A');
var sourcevalues = sourcerange.getFormulas();
var destsheet = shoot.getSheetByName('Sheet1');
var destrange = destsheet.getRange('A:A');
destrange.setValues(sourcevalues);
}
}
这里有一个链接,指向我一直在测试的内容。试试这个:
function myfunc() {
var files = DriveApp.getFolderById("1NNHFL6fMFz-LwJ4tZrvTN92foXhf7VS8").getFiles()
const ss=SpreadsheetApp.getActive();
var sourcesheet = ss.getSheetByName("Sheet1");
var sourcerange = sourcesheet.getRange(1,1,sourcesheet.getLastRow(),1);
var sourcevalues = sourcerange.getFormulas();
while (files.hasNext()) {
var file = files.next();
var shoot = SpreadsheetApp.openById(file.getId());
var destsheet = shoot.getSheetByName('Sheet1');
var destrange = destsheet.getRange(1,1,sourcesheet.getLastRow(),1);
destrange.setFormulas(sourcevalues);
}
}
如果将
setValues()
更改为setFormulas
(如果需要公式),则脚本工作正常:
函数myFunction(){
var files=DriveApp.getFolderById(“1NNHFL6fMFz-LwJ4tZrvTN92foXhf7VS8”).getFiles()
while(files.hasNext()){
var file=files.next();
var shot=SpreadsheetApp.openById(file.getId());
var sourcesheet=SpreadsheetApp.getActive().getSheetByName(“Sheet1”);
var sourcerange=sourcesheet.getRange('A:A');
var sourcevalues=sourcerange.getFormulas();
var destsheet=shoot.getSheetByName('Sheet1');
var destrange=destsheet.getRange('A:A');
destrange.setFormulas(sourcevalues);//你做了什么来调试这个问题?我两年前成功地运行了这个脚本,这就是为什么我感到困惑的原因。我让它运行在一个文件夹中,每次运行它都要编辑大约300张工作表,因此我将它拉出并放入它自己的测试文件夹(链接在上面)从头开始。我也更改了名称和不同的范围。我认为同一目录中的源代码文件可能有问题,所以我将其移动到了不同的位置查看。您是否运行了它并以调试模式查看了失败的地方?我运行了。它没有显示失败。它正在工作,尽管它正在执行o与我期望的相反,它正在清除目标单元格范围,而不是复制到其中。为什么要避免使用脚本编辑器中的调试器?
function myFunction() {
var files = DriveApp.getFolderById("1NNHFL6fMFz-LwJ4tZrvTN92foXhf7VS8").getFiles()
while (files.hasNext()) {
var file = files.next();
var shoot = SpreadsheetApp.openById(file.getId());
var sourcesheet = SpreadsheetApp.getActive().getSheetByName("Sheet1");
var sourcerange = sourcesheet.getRange('A:A');
var sourcevalues = sourcerange.getFormulas();
var destsheet = shoot.getSheetByName('Sheet1');
var destrange = destsheet.getRange('A:A');
destrange.setFormulas(sourcevalues); // <------------- HERE
}
}