Google 脚本复制粘贴
Google Script copy paste
现在它会覆盖日志中的相同单元格
我需要它写入下一个单元格而不是覆盖同一个单元格。
https://freeimage.host/I/5GIOjs 我想在 Sheet 名为 Logs 的列 A 中搜索 D3=Lumee,您会看到所有名称。想要它共同复制 J12 到特定名称
https://freeimage.host/i/5GTLJI
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getActiveSheet();
var j12 = s.getRange('J12').getValues();
var dynamic_cell = s.getRange('D3').getValue();
var target_s = ss.getSheetByName('Logs');
for (var i = 2; i<=target_s.getMaxRows();i++){
var match = target_s.getRange(i, 1).getValue();
if(dynamic_cell == match){
var targetrange = target_s.getRange(i,2,1);
break;
}
}
targetrange.setValues(j12);
}
我就是这样做的。
function myFunction() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh = ss.getActiveSheet();
const j12 = sh.getRange('J12').getValue();
const d3 = sh.getRange('D3').getValue();
const tsh = ss.getSheetByName('Logs');
const vs = tsh.getRange(2,1,tsh.getLastRow() -1).getValues();
for( let i = 0;i<vs.length; i++) {
if(d3 == vs[i][0]){
tsh.getRange(i + 2,2).setValue(j12);
break;
}
}
}
这比在每个循环中拉出匹配值要快得多。这样我一次就得到了所有这些并且循环 运行 快得多。
演示:
版本 2:
function myFunction() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh = ss.getSheetByName('Sheet0');
const j12 = sh.getRange('J12').getValue();
const d3 = sh.getRange('D3').getValue();
const tsh = ss.getSheetByName('Logs');
const vs = tsh.getRange(2, 1, tsh.getLastRow() - 1).getValues();
for (let i = 0; i < vs.length; i++) {
if (d3 == vs[i][0]) {
tsh.getRange(i + 2, getRowWidth(i + 2, tsh, ss) + 1).setValue(j12);
break;
}
}
}
辅助函数:
function getRowWidth(row, sh, ss) {
var ss = ss || SpreadsheetApp.getActive();
var sh = sh || ss.getActiveSheet();
var row = row || sh.getActiveCell().getRow();
var rcA = [];
if(sh.getLastColumn()){rcA = sh.getRange(row, 1, 1, sh.getLastColumn()).getValues().flat().reverse();}
let s = 0;
for (let i = 0; i < rcA.length; i++) {
if (rcA[i].toString().length == 0) {
s++;
} else {[![enter image description here][2]][2]
break;
}
}
return rcA.length - s;
}
演示:
现在它会覆盖日志中的相同单元格 我需要它写入下一个单元格而不是覆盖同一个单元格。 https://freeimage.host/I/5GIOjs 我想在 Sheet 名为 Logs 的列 A 中搜索 D3=Lumee,您会看到所有名称。想要它共同复制 J12 到特定名称 https://freeimage.host/i/5GTLJI
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getActiveSheet();
var j12 = s.getRange('J12').getValues();
var dynamic_cell = s.getRange('D3').getValue();
var target_s = ss.getSheetByName('Logs');
for (var i = 2; i<=target_s.getMaxRows();i++){
var match = target_s.getRange(i, 1).getValue();
if(dynamic_cell == match){
var targetrange = target_s.getRange(i,2,1);
break;
}
}
targetrange.setValues(j12);
}
我就是这样做的。
function myFunction() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh = ss.getActiveSheet();
const j12 = sh.getRange('J12').getValue();
const d3 = sh.getRange('D3').getValue();
const tsh = ss.getSheetByName('Logs');
const vs = tsh.getRange(2,1,tsh.getLastRow() -1).getValues();
for( let i = 0;i<vs.length; i++) {
if(d3 == vs[i][0]){
tsh.getRange(i + 2,2).setValue(j12);
break;
}
}
}
这比在每个循环中拉出匹配值要快得多。这样我一次就得到了所有这些并且循环 运行 快得多。
演示:
版本 2:
function myFunction() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh = ss.getSheetByName('Sheet0');
const j12 = sh.getRange('J12').getValue();
const d3 = sh.getRange('D3').getValue();
const tsh = ss.getSheetByName('Logs');
const vs = tsh.getRange(2, 1, tsh.getLastRow() - 1).getValues();
for (let i = 0; i < vs.length; i++) {
if (d3 == vs[i][0]) {
tsh.getRange(i + 2, getRowWidth(i + 2, tsh, ss) + 1).setValue(j12);
break;
}
}
}
辅助函数:
function getRowWidth(row, sh, ss) {
var ss = ss || SpreadsheetApp.getActive();
var sh = sh || ss.getActiveSheet();
var row = row || sh.getActiveCell().getRow();
var rcA = [];
if(sh.getLastColumn()){rcA = sh.getRange(row, 1, 1, sh.getLastColumn()).getValues().flat().reverse();}
let s = 0;
for (let i = 0; i < rcA.length; i++) {
if (rcA[i].toString().length == 0) {
s++;
} else {[![enter image description here][2]][2]
break;
}
}
return rcA.length - s;
}
演示: