google-apps-script - 谷歌表分叉(不适用于谷歌表单响应表)
问题描述
此功能工作正常。当前工作表不是 Google 表单响应表时。我正在使用(每分钟)触发器
图像:将数据 (mainData) 表打磨到 (shareData1) 表
- 我正在寻找一个,当用户提交状态为(已付费)的 Google 表单时,数据应该在第二张表上,即 (shareData1)
这里的问题是,当我使用 Google Forms 响应表时,此功能将不再起作用。它显示一个错误。 错误图像
在降级的错误图像中,我手动运行此功能,同样的错误显示在 Executions AppScript 面板中。
function doneCopy() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("mainData");
var values = sheet.getRange(1, 3, sheet.getLastRow(), 1).getValues();
var moveRows = values.reduce(function(ar, e, i) {
if (e[0] == "Paid" ) ar.push(i + 1)
return ar;
}, []);
var targetSheet = ss.getSheetByName("shareData1");
moveRows.forEach(function(e) {
sheet.getRange(e, 1, 1, sheet.getLastColumn()).moveTo(targetSheet.getRange(targetSheet.getLastRow() + 1, 1));
});
moveRows.reverse().forEach(function(e) {sheet.deleteRow(e)});
}
解决方案
function doneCopy() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh = ss.getSheetByName("mainData");
const tsh = ss.getSheetByName("shareData1");
const vs = sh.getRange(1, 3, sh.getLastRow(), 1).getValues().flat();
const n = sh.getLastColumn();
let d = 0;
vs.forEach((e, i) => {
if (e == 'Paid') {
sh.getRange(i + 1, 1, 1, n).copyTo(tsh.getRange(tsh.getLastRow() + 1, 1));
sh.deleteRow(i + 1 - d++);
}
});
}
我不确定您的其他需求是什么,但我会做出最好的猜测。
function doneCopy() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh = ss.getSheetByName("mainData");
const tsh = ss.getSheetByName("shareData1");
const vs = sh.getRange(1, 3, sh.getLastRow(), 1).getValues().flat();
const n = sh.getLastColumn();
const a = ['Paid','Process'];
let d = 0;
vs.forEach((e, i) => {
if (~a.indexOf(e)) {
sh.getRange(i + 1, 1, 1, n).copyTo(tsh.getRange(tsh.getLastRow() + 1, 1));
sh.deleteRow(i + 1 - d++);
}
});
}
推荐阅读
- javascript - 导航页面的背景过滤器太慢
- python - 没有计数器的循环中的额外计数器 = 计数器 + 1
- go - TLS 会话恢复
- matlab - 如何在我的 Matlab 代码中建立一个 for 循环?
- javascript - 如何保持:伪元素与父级水平滚动后
- r - dplyr group_by() 和 summarise() 在所选行之间的组内进行计算
- android - 如何在 RX 中进行顺序 API 调用
- spring - 如何将 Spnego 集成到 Spring WebFlux 安全性中
- java - 在使用 Java 动态 Web 项目时在 Maven-Shade 插件中定义 mainClass
- c - 仅在选择特定目标时才能在makefile中编译某些文件并在makefile中添加标志?