javascript - 将 google sheet 复制到 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);
}
}
我希望输出getID.makeCopy(employeeNumber + " High Flyer Card", destinationFolder);
包含不同的员工编号和员工姓名,而不仅仅是 google 文件夹中的一个值。
解决方案
您的代码应该按预期工作,除非一个庞大的文件使代码重叠。
如果是这样,flush()的实现将使您的代码按顺序运行,请参阅此处了解详细说明。
在您的情况下,将 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();
}
应该解决问题。
推荐阅读
- sql - SQL如何选择至少包含某个条件并且多次出现的ID?
- solr - 我在 SOLR 7.5 中收到错误“rod() 不支持基于点的字段”。如何解决?
- flutter - 嵌套滚动正文中的正文显示在 headerSliverBuilder 后面
- jmeter - 将 .har 文件转换为 .jmx JMeter 后,请求正文被删除
- spring - 在 Spring 应用程序中测试 GCP 发布者重试设置
- c# - 如何将图像名称保存在mysql数据库中,然后用C#将图像上传到wamp服务器
- php - $_SESSION 摧毁德国元音变音
- python - 如何检测和删除那些复杂的表情符号?
- java - 如何在 Java 中打印不带分号的 Hello World?
- c++ - 调整轮廓大小/纠正不完整的轮廓 OpenCV