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
  }
}