【GAS】지정 범위의 셀로부터 수식과 값을 모두 취득한다 (getValues()&getFormulas())
8584 단어 GoogleAppsScriptspreadsheetgas
개요
getValues() 에서는 값 밖에 취득할 수 없습니다.
getFormulas()에서는 수식 밖에 취득할 수 없습니다.
수식과 값을 모두 취할 수 있는 함수를 찾을 수 없었기 때문에 만들어 보았습니다.
수요가 있는지는 수수께끼입니다.
더 좋은 방법이 있습니다! 라고 하는 경우는 코멘트 잘 부탁합니다.
아래 샘플
소스 코드
main.gs/***********
指定範囲のセルから数式と値を取得する関数
@param:セル範囲
@return:2次元配列
************/
function getValuesAndFormulas(range){
//getValues()でまずは値だけ取得
var valuesAndFomulas = range.getValues();
Logger.log("valuesAndFomulas:%s", valuesAndFomulas);
//getFormulas()で数式を取得
var tempFormulas = range.getFormulas();
Logger.log("tempFormulas:%s", tempFormulas);
//getValues()で取得した配列とgetFormulas()で取得した配列を突合
for(column = 0; column < valuesAndFomulas[0].length; column++){
for(row = 0; row < valuesAndFomulas.length; row++){
//getFormulas()で取得した数式の入っている要素を代入して更新
if(tempFormulas[row][column].length != 0){
//空ではなく数式が入っている
valuesAndFomulas[row][column] = tempFormulas[row][column];
}else{
//空の場合
;//何もしない
}
}
}
Logger.log("valuesAndFomulas:%s", valuesAndFomulas);
return valuesAndFomulas;
}
function main() {
//紐づいているスプレッドシートにアクセス
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
Logger.log(spreadsheet.getName());
//アクティブなシートを取得
var sheet = spreadsheet.getActiveSheet();
//B3:D7のセル範囲を指定
var range = spreadsheet.getRangeByName('B3:D7');
//var range = sheet.getRange(3, 2, 5, 3);//こちらでも可
//チェック
var checkGetValues = range.getValues();
Logger.log("checkGetValues:%s", checkGetValues);
var checkGetFormulas = range.getFormulas();
Logger.log("checkGetValues:%s", checkGetFormulas);
var checkGetValuesAndGetFormulas = getValuesAndFormulas(range);
Logger.log("checkGetValuesAndGetFormulas:%s", checkGetValuesAndGetFormulas);
//書き込み
spreadsheet.getRangeByName('F3:H7').setValues(checkGetValues);
spreadsheet.getRangeByName('B10:D14').setValues(checkGetFormulas);
spreadsheet.getRangeByName('F10:H14').setValues(checkGetValuesAndGetFormulas);
}
실행 결과
로그
Reference
이 문제에 관하여(【GAS】지정 범위의 셀로부터 수식과 값을 모두 취득한다 (getValues()&getFormulas())), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/SONER-O/items/e80eb586d5ca8576aa65
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
소스 코드
main.gs
/***********
指定範囲のセルから数式と値を取得する関数
@param:セル範囲
@return:2次元配列
************/
function getValuesAndFormulas(range){
//getValues()でまずは値だけ取得
var valuesAndFomulas = range.getValues();
Logger.log("valuesAndFomulas:%s", valuesAndFomulas);
//getFormulas()で数式を取得
var tempFormulas = range.getFormulas();
Logger.log("tempFormulas:%s", tempFormulas);
//getValues()で取得した配列とgetFormulas()で取得した配列を突合
for(column = 0; column < valuesAndFomulas[0].length; column++){
for(row = 0; row < valuesAndFomulas.length; row++){
//getFormulas()で取得した数式の入っている要素を代入して更新
if(tempFormulas[row][column].length != 0){
//空ではなく数式が入っている
valuesAndFomulas[row][column] = tempFormulas[row][column];
}else{
//空の場合
;//何もしない
}
}
}
Logger.log("valuesAndFomulas:%s", valuesAndFomulas);
return valuesAndFomulas;
}
function main() {
//紐づいているスプレッドシートにアクセス
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
Logger.log(spreadsheet.getName());
//アクティブなシートを取得
var sheet = spreadsheet.getActiveSheet();
//B3:D7のセル範囲を指定
var range = spreadsheet.getRangeByName('B3:D7');
//var range = sheet.getRange(3, 2, 5, 3);//こちらでも可
//チェック
var checkGetValues = range.getValues();
Logger.log("checkGetValues:%s", checkGetValues);
var checkGetFormulas = range.getFormulas();
Logger.log("checkGetValues:%s", checkGetFormulas);
var checkGetValuesAndGetFormulas = getValuesAndFormulas(range);
Logger.log("checkGetValuesAndGetFormulas:%s", checkGetValuesAndGetFormulas);
//書き込み
spreadsheet.getRangeByName('F3:H7').setValues(checkGetValues);
spreadsheet.getRangeByName('B10:D14').setValues(checkGetFormulas);
spreadsheet.getRangeByName('F10:H14').setValues(checkGetValuesAndGetFormulas);
}
실행 결과
로그
Reference
이 문제에 관하여(【GAS】지정 범위의 셀로부터 수식과 값을 모두 취득한다 (getValues()&getFormulas())), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/SONER-O/items/e80eb586d5ca8576aa65텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)