Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将谷歌工作表复制到谷歌驱动器文件夹中_Javascript_For Loop_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 将谷歌工作表复制到谷歌驱动器文件夹中

Javascript 将谷歌工作表复制到谷歌驱动器文件夹中,javascript,for-loop,google-apps-script,google-sheets,Javascript,For Loop,Google Apps Script,Google Sheets,我有两张电子表格。第一个电子表格包含我的原始数据,指示员工和员工姓名。第二个电子表格是我想复制到google drive文件夹中的电子表格。我想根据第一份电子表格中的员工编号和员工姓名更新第二份电子表格中的特定字段。每次更新第二个电子表格中的单元格时,它都会将第二个电子表格的副本创建到google drive文件夹中 但是,它在复制的电子表格中只设置一个值。它不会循环第一个电子表格中的员工姓名和员工编号 我的代码已经在复制第二个电子表格。只是这些值没有更新 function replicate

我有两张电子表格。第一个电子表格包含我的原始数据,指示员工和员工姓名。第二个电子表格是我想复制到google drive文件夹中的电子表格。我想根据第一份电子表格中的员工编号和员工姓名更新第二份电子表格中的特定字段。每次更新第二个电子表格中的单元格时,它都会将第二个电子表格的副本创建到google drive文件夹中

但是,它在复制的电子表格中只设置一个值。它不会循环第一个电子表格中的员工姓名和员工编号

我的代码已经在复制第二个电子表格。只是这些值没有更新

 function replicateCards() {
  var ss = SpreadsheetApp.openById('xxxxxxxx');
  var copyCard = SpreadsheetApp.openById('zzzzzzzzz');
  var getID = DriveApp.getFileById(copyCard.getId())
  var card = copyCard.getSheetByName("Card");
  var mastersheet = ss.getSheetByName("Mastersheet");
  var getLastRow = mastersheet.getLastRow();
  var destinationFolder = DriveApp.getFolderById('yyyyyyyyyy');
  ;
  var changeColorToGrayList = card.getRangeList(['C7', 'E7', 'G7', 'I7', 'K7', 'M7', 'O7', 'Q7',
                                                 'C9', 'E9', 'G9', 'I9', 'K9', 'M9', 'O9', 'Q9',
                                                 'C11', 'E11', 'G11', 'I11', 'K11', 'M11', 'O11', 'Q11']);
  var setValueToZero = card.getRangeList(['C8', 'E8', 'G8', 'I8', 'K8', 'M8', 'O8', 'Q8',
                                          'C10', 'E10', 'G10', 'I10', 'K10', 'M10', 'O10', 'Q10',
                                          'C12', 'E12', 'G12', 'I12', 'K12', 'M12', 'O12', 'Q12']);

  for (i = 1; i < getLastRow; i++) {

    var employeeNumber = mastersheet.getRange(i + 1, 1).getValue();
    var employeeName = mastersheet.getRange(i + 1, 2).getValue();
    card.getRange("C3").setValue(employeeName);
    card.getRange("H3").setValue(employeeNumber);
    card.setActiveRangeList(changeColorToGrayList).setBackground("gray");
    card.setActiveRangeList(setValueToZero).setValue(0);
    //    var getID = DriveApp.getFileById(card).getId(); 
    getID.makeCopy(employeeNumber + " High Flyer Card", destinationFolder);
  }
}
函数复制卡(){
var ss=SpreadsheetApp.openById('xxxxxxxx');
var copyCard=SpreadsheetApp.openById('zzzzz');
var getID=DriveApp.getFileById(copyCard.getID())
var card=copyCard.getSheetByName(“卡”);
var mastersheet=ss.getSheetByName(“mastersheet”);
var getLastRow=mastersheet.getLastRow();
var destinationFolder=DriveApp.getFolderById('yyyyyyyyy');
;
var changeColorToGrayList=card.getRangeList(['C7','E7','G7','I7','K7','M7','O7','Q7',',
‘C9’、‘E9’、‘G9’、‘I9’、‘K9’、‘M9’、‘O9’、‘Q9’,
‘C11’、‘E11’、‘G11’、‘I11’、‘K11’、‘M11’、‘O11’、‘Q11’);
var setValueToZero=card.getRangeList(['C8','E8','G8','I8','K8','M8','O8','Q8',',
‘C10’、‘E10’、‘G10’、‘I10’、‘K10’、‘M10’、‘O10’、‘Q10’,
‘C12’、‘E12’、‘G12’、‘I12’、‘K12’、‘M12’、‘O12’、‘Q12’);
对于(i=1;i

我希望得到
getID.makeCopy(employeeNumber+“High Flyer Card”,destinationFolder)的输出
包含不同的员工和员工姓名,而不仅仅是google文件夹中的一个值。

您的代码应该按预期工作,除非一个庞大的文件使代码重叠

如果是这样,的实现将使代码按顺序运行,有关详细说明,请参阅

在您的情况下,将for循环修改为

  for (i = 1; i < getLastRow; i++) {
    var employeeNumber = mastersheet.getRange(i + 1, 1).getValue();
    var employeeName = mastersheet.getRange(i + 1, 2).getValue();
    card.getRange("C3").setValue(employeeName);
    card.getRange("H3").setValue(employeeNumber);
    card.setActiveRangeList(changeColorToGrayList).setBackground("gray");
    card.setActiveRangeList(setValueToZero).setValue(0);
    getID.makeCopy(employeeNumber + " High Flyer Card", destinationFolder);
    SpreadsheetApp.flush();  
  }
for(i=1;i

应该解决这个问题。

不应该使用:
var getID=DriveApp.getFileById(card.getID())
而不是
var getID=DriveApp.getFileById(***复制***Card.getID())?你好,a-burge。很抱歉我弄糊涂了。你能详细说明一下吗?我还更新了代码供您参考。=)我的目的是覆盖C3和H3单元格中的值,然后将电子表格复制到每个循环的google drive文件夹中。假设我有两张来自Mastersheet的唱片。我应该有2个复制卡在我的谷歌驱动器文件夹与不同的员工编号和员工姓名。道歉。我对使用应用程序脚本还是新手。=)对不起,我误解了你的意思。请您提供您的完整代码,其中定义了卡、复印卡等,以便更容易进行故障排除。对于混淆,我们也深表歉意。我已经更新了代码@ziganotschka。应该发生的是:1。创建一个覆盖员工#和员工姓名的循环。这些值来自原始数据。2.每次更改/覆盖员工和员工姓名时,制作一份卡片电子表格副本。3.将其保存到google drive文件夹中。因此,如果我的原始数据中有两条记录,我应该有两份同样带有不同员工和姓名的卡片电子表格。希望现在更清楚了。谢谢你的帮助,兄弟=)我运行了你的代码,它按照我的预期工作。也许你的电子表格有问题。我可以看一看,如果你分享的话。请确保先对其进行消毒,不要提供任何私人信息。嗨@ziganotschka。看来flush()解决了这个问题!!!谢谢你!!我现在正在测试它是否对许多记录有效!