大鼻子的大葱 · PyTorch backward原理 | ...· 1 年前 · |
腹黑的豆浆 · SVN 简介 | 菜鸟教程· 1 年前 · |
傻傻的课本 · 为什么我们重写 k8s ingress ...· 1 年前 · |
插入的脚本复制范围Sheet1!A5:F5中的值,然后转置粘贴到Sheet2的第一行和第二列中。
脚本能够在连续使用时复制并转到第二列最后一行下的粘贴,直到重置为止。
。
粘贴前的 当前结果-复制范围Sheet1 A5:F5
粘贴到Sheet2 中第二列后的电流结果
。
。
。
我的目标是:
粘贴前的 预期结果-复选框= True,复制范围Sheet1 A5:F5
粘贴后的预期效果Sheet2 B7:B
已尝试插入:
if (sheet.getSheetName() != "*DuplioMltSlds" || range.getA1Notation() != "D13" || !range.isChecked()) return;
以及将函数更改为onEdit。也曾尝试过各种
var row = ss.getRange("Sheet2!B7:B")
选项,但一直未能找到合适的结果。
脚本源 和脚本:
function copyTransposeAndDelete () {
var ss = SpreadsheetApp.getActiveSpreadsheet ();
var source = ss.getRange("Sheet1!A5:F5");
var destSheet = ss.getSheetByName("Sheet2");
var destRange = destSheet.getRange(destSheet.getLastRow()+1, 2, source.getWidth(), source.getHeight());
destRange.setValues(transpose(source.getValues()));
function transpose(array) {
return array[0].map(function(row, i) {
return array.map(function(col) {
return col[i];
}
发布于 2022-10-11 23:38:45
我相信你的目标如下。
在这种情况下,下面的修改如何?
修改脚本:
function onEdit(e) {
// Ref: https://stackoverflow.com/a/44563639
Object.prototype.get1stNonEmptyRowFromBottom = function (columnNumber, offsetRow = 1) {
const search = this.getRange(offsetRow, columnNumber, this.getMaxRows()).createTextFinder(".").useRegularExpression(true).findPrevious();
return search ? search.getRow() : offsetRow;
var { source, range } = e;
var sheet = range.getSheet();
if (sheet.getSheetName() != "Sheet1" || range.getA1Notation() != "B2" || !range.isChecked()) return;
var srcRange = sheet.getRange("A5:F5");
var dstSheet = source.getSheetByName("Sheet2")
var row = dstSheet.get1stNonEmptyRowFromBottom(2) + 1;
var dstRange = dstSheet.getRange("B" + (row < 7 ? 7 : row));
srcRange.copyTo(dstRange, SpreadsheetApp.CopyPasteType.PASTE_VALUES, true);
}
注意:
TypeError: Cannot destructure property 'source' of 'e' as it is undefined.
的错误。请小心这件事。
参考文献:
添加:
如果您想将值放到"Sheet2“的列"B”中,即使"Sheet2“的列"B”已经在第7行之后有值,那么下面的示例脚本如何?
示例脚本:
function onEdit(e) {
// Ref: https://stackoverflow.com/a/44563639/7108653
Object.prototype.get1stEmptyRowFromTop = function (columnNumber, offsetRow = 7) {
const range = this.getRange(offsetRow, columnNumber, 2);
const values = range.getDisplayValues();
if (values[0][0] && values[1][0]) {
return range.getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow() + 1;
} else if (values[0][0] && !values[1][0]) {
return offsetRow + 1;
return offsetRow;
var { source, range } = e;
var sheet = range.getSheet();
if (sheet.getSheetName() != "Sheet1" || range.getA1Notation() != "B2" || !range.isChecked()) return;
var srcRange = sheet.getRange("A5:F5");
var dstSheet = source.getSheetByName("Sheet2")
var row = dstSheet.get1stEmptyRowFromTop(2);
var dstRange = dstSheet.getRange("B" + row);
srcRange.copyTo(dstRange, SpreadsheetApp.CopyPasteType.PASTE_VALUES, true);
}
发布于 2022-10-12 00:16:42
function myfunk() {
腹黑的豆浆 · SVN 简介 | 菜鸟教程 1 年前 |