有冇巴打熟 Google Script

44 回覆
0 Like 10 Dislike
2019-04-24 08:59:48
[題外話]乜原來連登都有google script同好
我成日以為得我會玩
2019-04-24 09:02:47
巴打你本身自學前係已經有相關電腦 language
定係都只係文職人員自修 ??
2019-04-24 09:07:20
巴打你本身係 IT 人定文職人 ?
點解你又會學 Google script ??

我自己睇 Excel VBA 既書我係睇得明
都有信心會學得識, 但睇 Google script 睇咗好多
都重係好模糊不清, 諗住當興趣想去工聯會學吓
Javascript, 但佢個課程又要先修咗 html5 網頁
初級同進階好似會好 d 諗落都慢慢長路
2019-04-24 09:19:22
我本身有識vba,所以對spreadsheet本身已經好熟,但都係自學返嚟。
上面打比你改格式果段code我本身都唔識,都係琴晚先開始研究。

下一步就係嘗試令個程式認到個range
跟住再睇下有咩功能可以用。
2019-04-24 09:25:28
認到個range嘅意思係要搵依家highlight咗邊幾格?
2019-04-24 09:28:45
我唔係IT人呀,但我自己有好多idea想寫。
我唔係睇書學返嚟,我係自己寫自己想寫嘅嘢。
遇到困難就去google search。

長年累月就慢慢進步,不過concept方面比正統IT人仲差得多。
我覺得你應該學下處理Text, loop, array先
依啲都係好基本嘅嘢,學識咗無論咩programming language都用得著
2019-04-24 10:11:05
又唔可以咁講。
例如我想喺B3依一格打字。人類要做依個動作首先要用mouse揀咗B3依一格,然後再打字。
如果你錄巨集就會係咁:
function myFunction() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('B3').activate();
  spreadsheet.getCurrentCell().setValue('lihkg');
};

你可以見到首先要activate B3依格(即係你所講highlight某一格),然後再喺CurrentCell打字。

但係對程式嚟講,佢可以直接喺B3依格打字,唔洗好似人手咁用mouse click落去B3先。
你可以見到下面段code冇咗activate B3依一句。
function myFunction() {
  var spreadsheet = SpreadsheetApp.getActive();
  var range = spreadsheet.getSheetByName("Sheet1").getRange("B3");
  range.setValue("lihkg");
};

更好的做法係用(3,2)依個坐標去表示B3依一格。:
function myFunction() {
  var spreadsheet = SpreadsheetApp.getActive();
  var range = spreadsheet.getSheetByName("Sheet1").getRange(3,2);
  range.setValue("lihkg");
};

因為你可以設定variables去控制邊一格要打字。
例如我想(1,1), (2,2), (3,3), (4,4), (5,5)都打字:
function myFunction() {
  var spreadsheet = SpreadsheetApp.getActive();
  for (var i = 1;i<=5;i++) {
  var range = spreadsheet.getSheetByName("Sheet1").getRange(i,i);
  range.setValue("lihkg");
  }
};

2019-04-24 10:44:10
Out 巴打不如出本書啦, 好似以前 VBA 都有好多書

我行過圖書館同去過各大細書店, 真係冇書講
Google Script 同 Spreadsheet 之間既應用,
好似 var 到底係點解, d Javascript 既書都好小講解

又例如我見成日都會出現既
var i = 1; i<=5; i++
呢個相近組合我都成日見, 但係其實唔明佢既意思

我暫時學既方向都係透過工作時諗到而想做
但因為 spresdsheet 可以同其他同事 online 一齊做, 而每個同事對於 spreadsheet 應用既水平都唔同, 所以就開始研究自己做 function key
2019-04-24 10:47:49
var係variable
係攞嚟儲存低d有用嘅data

至於
var i = 1; i<=5; i++
係for loop嘅一部分

e.g.
for(var i = 0;i<5;i++){ /*do something*/ }
2019-04-27 19:41:47
巴打我想請教你
var startrow 能唔能夠改成 CurrentRow
如果可以應該點寫
因為我想呢個功能可以隨意係任何一個 A 格開始
2019-04-28 09:52:41
你的問題應該係:點知道某一個Column的last row係第幾個row?
如果喺vba就可以用End(xlup).row,但係Google Script好似冇依樣嘢。

你知道你的問題之後就可以Google search到。
https://stackoverflow.com/questions/17632165/determining-the-last-row-in-a-single-column

function myFunction() {
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getSheetByName("Sheet1");
  var Avals = sheet.getRange("A1:A").getValues();
  var Alast = Avals.filter(String).length;
  return Alast
}

上面依段code夠短,而且可以成功搵到Column A有5個rows係有data。
運作原理係將整個Column A變做一個array (Avals),再刪走哂所有空白嘅內容 (filter),然後睇下個array的length係幾多。


但有個缺點就係如果中間某啲cells係空白,佢就會認唔到。


如果想有更好的方法,可以再研究下上面stackoverflow條式,或者等其他巴打出手。
2019-04-28 12:42:34
多謝巴打再幫手, 我再研究吓先
2019-05-06 01:54:32
有無巴打既google script 都好lag?
2019-05-06 09:10:34
唔 lag 喎
2019-08-17 17:58:43
?
2019-08-17 19:28:36
經過咗呢三個月既努力, 返工聯會, 由最基本 html5 開始學起,
跟住再學初階 javascript, 由再不停地鑽研巴打你呢個 post 入面既 codes,
codes,
我終於做到我想做既啦 我終於寫成咗我要既 code,
呢個 code 主要係 4 行格仔加混算模式, 我自己寫成後其實係有
1 - 20 行既唔同 function, 下方 share 咗 4 行模式既 code 俾巴打參詳,
等巴打知道當初我想做既事項, 同埋我亦學識咗自建功能表, 呢個 funtion 真係好正

function bbb_border4(){

var sheet = SpreadsheetApp.getActiveSheet();
var row = sheet.getActiveCell().getRow();
var cell = SpreadsheetApp.getActiveSheet().getActiveSelection();

sheet.getRange(row, 1, 1, 10).activate();
cell.setBorder(true, true, true, true, false, false);

var sheet = SpreadsheetApp.getActiveSheet();
var row = sheet.getActiveCell().getRow();
var cell = SpreadsheetApp.getActiveSheet().getActiveSelection();

sheet.getRange(row, 1, 1, 10).activate();
cell.setBorder(true, true, true, true, false, false);

var sheet = SpreadsheetApp.getActiveSheet();
var row = sheet.getActiveCell().getRow();
var cell = SpreadsheetApp.getActiveSheet().getActiveSelection();

sheet.getRange(row, 1, 1, 7).activate();
cell.setBorder(true, true, true, true, false, false);

var sheet = SpreadsheetApp.getActiveSheet();
var row = sheet.getActiveCell().getRow();
var cell = SpreadsheetApp.getActiveSheet().getActiveSelection();

sheet.getRange(row, 1, 1, 7).activate();
cell.setBorder(true, true, true, true, false, false);

var sheet = SpreadsheetApp.getActiveSheet();
var row = sheet.getActiveCell().getRow();
var cell = SpreadsheetApp.getActiveSheet().getActiveSelection();

sheet.getRange(row, 1, 1, 1).activate();
cell.setBorder(true, true, true, true, false, false);

var sheet = SpreadsheetApp.getActiveSheet();
var row = sheet.getActiveCell().getRow();
var cell = SpreadsheetApp.getActiveSheet().getActiveSelection();

sheet.getRange(row, 1, 1, 1).activate();
cell.setBorder(true, true, true, true, false, false);

sheet.getRange(row+0, 1, 1).setValue("S/O:");
sheet.getRange(row+0, 7, 1).setValue("Date:");
sheet.getRange(row+1, 1, 1).setValue("cm");
sheet.getRange(row+1, 3, 1).setValue("cm");
sheet.getRange(row+1, 5, 1).setValue("cm");
sheet.getRange(row+1, 7, 1).setValue("Volume");
sheet.getRange(row+1, 8, 1).setValue("Unit");
sheet.getRange(row+1, 9, 1).setValue("CBM");
sheet.getRange(row+1, 10, 1).setValue("KGS");
sheet.getRange(row+2, 2, 1).setValue("X");
sheet.getRange(row+2, 4, 1).setValue("X");
sheet.getRange(row+2, 6, 1).setValue("X");
sheet.getRange(row+3, 2, 1).setValue("X");
sheet.getRange(row+3, 4, 1).setValue("X");
sheet.getRange(row+3, 6, 1).setValue("X");
sheet.getRange(row+4, 2, 1).setValue("X");
sheet.getRange(row+4, 4, 1).setValue("X");
sheet.getRange(row+4, 6, 1).setValue("X");
sheet.getRange(row+5, 2, 1).setValue("X");
sheet.getRange(row+5, 4, 1).setValue("X");
sheet.getRange(row+5, 6, 1).setValue("X");


var a = [ ["=(R[0]C[-8])/100"] ];
var b = [ ["*(R[0]C[-6])/100"] ];
var c = [ ["*(R[0]C[-4])/100"] ];
var d = [ ["*(R[0]C[-2])"] ];
var formulas1 = a + b + c + d;

var c = [ ["=(R[-1]C[-0])"] ];
var d = [ ["+(R[-2]C[-0])"] ];
var e = [ ["+(R[-3]C[-0])"] ];
var f = [ ["+(R[-4]C[-0])"] ];
var formulas2 = c + d + e + f;

var c = [ ["=(R[-1]C[-0])"] ];
var d = [ ["+(R[-2]C[-0])"] ];
var e = [ ["+(R[-3]C[-0])"] ];
var f = [ ["+(R[-4]C[-0])"] ];
var formulas3 = c + d + e + f;

var c = [ ["=(R[-1]C[-0])"] ];
var d = [ ["+(R[-2]C[-0])"] ];
var e = [ ["+(R[-3]C[-0])"] ];
var f = [ ["+(R[-4]C[-0])"] ];
var formulas4 = c + d + e + f;

sheet.getRange(row+2, 9).setValue(formulas1);
sheet.getRange(row+3, 9).setValue(formulas1);
sheet.getRange(row+4, 9).setValue(formulas1);
sheet.getRange(row+5, 9).setValue(formulas1);
sheet.getRange(row+6, 9).setValue(formulas2);
sheet.getRange(row+6, 7).setValue(formulas3);
sheet.getRange(row+6, 10).setValue(formulas4);
cell.setHorizontalAlignment("center");
cell.setFontSize("12");
2019-08-17 19:28:47
var sheet = SpreadsheetApp.getActiveSheet();
var row = sheet.getActiveCell().getRow();
var cell = SpreadsheetApp.getActiveSheet().getActiveSelection();

sheet.getRange(row+1, 1, 5, 10).activate();
cell.setBorder(true, true, true, true, true, true);

var sheet = SpreadsheetApp.getActiveSheet();
var row = sheet.getActiveCell().getRow();
var cell = SpreadsheetApp.getActiveSheet().getActiveSelection();

sheet.getRange(row+1, 1, 5, 10).activate();
cell.setBorder(true, true, true, true, true, true);

sheet.getRange(row+2, 7, 4, 4).activate();
cell.setBorder(true, true, true, true, true, true);

var sheet = SpreadsheetApp.getActiveSheet();
var row = sheet.getActiveCell().getRow();
var cell = SpreadsheetApp.getActiveSheet().getActiveSelection();

sheet.getRange(row+2, 7, 4, 4).activate();
cell.setBorder(true, true, true, true, true, true);

}
吹水台自選台熱 門最 新手機台時事台政事台World體育台娛樂台動漫台Apps台遊戲台影視台講故台健康台感情台家庭台潮流台美容台上班台財經台房屋台飲食台旅遊台學術台校園台汽車台音樂台創意台硬件台電器台攝影台玩具台寵物台軟件台活動台電訊台直播台站務台黑 洞