SpreadsheetのGoogle Apps Script
今日も再掲載をしていきます。
この場合、GASを使います。
function EncodeGet() {
let s_name="input";
var sh =SpreadsheetApp.getActiveSpreadsheet().getSheetByName(s_name);
var rg=sh.getRange(1,2);
const st_sorce = rg.getValue();
let Enc =EncodeMain(st_sorce);
var rg=sh.getRange(2,2);
rg.setValue(Enc)
};
これが、メインのfunctionになります。
var sh =SpreadsheetApp.getActiveSpreadsheet().getSheetByName(s_name);
が、シートの指定になります。
SpreadsheetのObjectを
SpreadsheetApp.getActiveSpreadsheet()
で表しシート名で↓のようにsheetを指定します。
getSheetByName(s_name);
さらにセルは
getRange(1,2)
で指定し
読み込むときは
getValue();
書き込むときは
lsetValue(Enc)
を使います。
前回同様にEncodeの本体は
function EncodeMain(st){
let encMain="";
let n=st.length;
for(let i = 0; i < n; i++) {
let st_unit =st.slice(i, i+1);
encMain= encMain+ Encode1st(st_unit)
};
return encMain;
};
としました。
let n=st.length;
は文字数を求めています。
for(let i = 0; i < n; i++) {
let st_unit =st.slice(i, i+1);
encMain= encMain+ Encode1st(st_unit)
};
この部分は、繰り返しの構文
for を使っています。
let st_unit =st.slice(i, i+1);
は1文字づつ抽出する式です。
return encMain;
は、関数の結果を返す式です。
実際にEncodeする関数は
function Encode1st(st){
let n=453;
let m=17;
let y=0;
let x=0;
for(let i = 1; i <= n; i++) {
for(let j = 2; j <= m; j++) {
var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(s_name);
var rg=sh.getRange(i,j);
let cv = rg.getValue();
if (cv==st) {
y=i;
x=j;
}else{
};
};
};
let s1 = "0123456789ABCDEF";
let s2 = "%";
var rg=sh.getRange(y,1);
let u1 = rg.getValue();
let u3 = u1.slice(2, 3);
let u4 = s1.slice(x-2, x-1);
return Encode;
};
if (cv==st) {
y=i;
x=j;
}else{
};
は、ifによる条件分岐です。
GASでは、変数の定義があいまいなことと処理速度が遅い点が、難しいかと
2022年8月18日記載 2022年9月18日改訂
台風だいぶ近づいてます。
明日は、ほんとに危ないです。
今晩にも九州上陸するみたいです。