SpreadSheet의 열을 2D 배열 (메모리)의 열로 대체/덮어 쓰는 직접적인 방법으로 누군가가 나에게 포인터를 줄 수 있는지 궁금합니다.Google 스프레드 시트 스크립트 - 배열을 시트로 덤핑하는 좀 더 직접적인 방법?
현재 아래 코드는 "for"루프를 통해 행 단위로 스크롤하여 값을 셀에 씁니다. 이것은 괜찮 았지만 시트가 7k 행 이상으로 늘어 났으므로이 스크립트는 접근 실행 시간 제한이 있습니다.
전체 시트를 메모리 배열에 저장하고 계산하는 데 약간의 시간이 걸렸습니다. 시트를 셀 단위로 호출하는 for 루프가 영원히 필요합니다.
셀을 스크롤하여 값을 업데이트하려면 열을 아래로 스크롤하는 대신 전체 열을 바꾸는 더 직접적인 방법이 있어야합니다.
모든 포인터는 많은 도움이 될 것입니다. 제발 무언가를 용서해주십시오. 스크립팅을 처음 접하는 것뿐입니다.
감사 M
function UnitPrice() {
var range = Stocklist.getRange(1, 1, LastRow, LastColumn).getValues();
for (var i=1; i < (LastRow); i++){
var PurposeArray = range[i][PurposeCol-1];
var ListedArray = range[i][ListedCol-1];
var QtyArray = range[i][QtyCol-1];
var CostArray = range[i][Cost$Col-1];
var Unit$Array = range[i][Unit$Col-1];
var PremiumArray = range[i][PremiumCol-1];
if (QtyArray!="0" && QtyArray!=""){
range[i][Unit$Col-1] = CostArray*(1+PremiumArray)/QtyArray;
} else{
range[i][Unit$Col-1] = "";
}
if (ListedArray!=""&&PurposeArray==""){
range[i][PurposeCol-1] = "Stock";
}
}
//update spreadsheet's column "Unit$Col" with values from column 25 of 'range' array.
for (var j=1; j < LastRow; j++){
Stocklist.getRange(j+1, Unit$Col).setValue(range[j][Unit$Col-1]);
Stocklist.getRange(j+1, PurposeCol).setValue(range[j][PurposeCol-1]);
}
}
정말 멋지다! 정확히 내가 필요로했던 것, 당신 덕분에. 나는 함수가 어떻게 높은 수준에서 작동하는지 이해하지만, 현재 작동하게하기 위해 기존 코드에 함수를 적용하는 데 문제가있다. 다시 코딩 경험의 부족에 대한 사과. – user1488934
이것은 스프레드 시트의 열을 배열의 열로 바꾸고 모든 종류의 구문/코드 오류가있는 너트 셸에서 수행하려는 작업입니다. Stocklist.getRange (Unit $ Col) .setValues (range [Unit $ Col-1]); – user1488934
배열에 대한 자바 스크립트 자습서를 작성해야하는 것처럼 들립니다. ... 2 차원 배열이 필요합니다. 뭔가 같은 : Stocklist.getRange (Unit $ Col) .setValues (범위) – eddyparkinson