Google 板


LINE

※ 引述《good8195 (Kevin)》之铭言: : 小弟对於excel熟悉 : 网路也能找到相关vba去研究 : 但是google试算表关键字少又不知道该如何搜寻 : 目前小弟有想要做一个东西是 : 复制a1跟b1後直接在c跟d栏置底贴上 : (置底是在最後一个填写的内容下一格贴上) : 使用录制第一次可成功第二次会覆盖 : 所以想了解试算表该怎麽做 : 我excel有自己摸索过经验 : 应该看了会懂 : 或者能提供可以学习的中文网站 Google 相关网站内中文翻译页面都有一站没一站的了(好吧、是几乎没有),应该没 什麽比较完整的中文资讯,有的话我也想知道www Google Apps Script 主要的语法、结构是基於 JavaScript 发展,但又跟 JavaScript 不完全相容。没跟上最新的 JavaScript 版本外,有些 JavaSctip 基本语法或 Object / Methods 也因为 Google 自身的限制因安全或效能等理由被拿掉了。 总之需要用到 Google Apps Script 的话还是可以从 JavaScript 下手,中文资讯很多 也不难找到资源。碰到不相容的时候,就碰到时再说、、、再去处理、解决。 除 JavaScript 语法外,最主要的重点还是 Google 针对 Google Apps 产品提供的物 件、类与方法等。这就只能上 Google Apps Script 网站的 REFERENCE 页面找查了。 https://developers.google.com/apps-script/reference/ 由於原PO的需求很简单,只需剪贴一下就好。所以打开 Spreadsheet 的试算表中 [工具]内的[指令码编辑器]。 把下面附的程式码复制贴到[程式码.gs]中然後[储存],点[执行]内[执行函式] 选取[onOpen]函式。途中有跳出授权要求的都要许可。 回到试算表页面,[说明]的後面应该多了一个[Custom Menu]可按,点选其中的 [Copy A1 B1 & Paste]就会呼叫[myFunction]执行复制贴上的动作。 对於 Apps Script 要注意的是,资料都是处於 Google Apps 也就是伺服器的云端,浏 览器画面中的都只是结果。为了效能减少伺服器端的 I/O 的次数是极重要的。这与资 料及处理基本上都是在本机的 VBA 大不同。 在 Spreadsheet 减少对栏位资料的读取与写入,尤其是写入的次数很重要。写入资料时 比起读取 Google server 端间需要验证(耗时)。所以分别写入10个栏位,还不如一 次写入10*10的范围。 以范围读取所需的栏位值,处理完後再以范围回写。 Sheet.getRange(row, column) // 单栏位 Sheet.getRange(row, column, numRows) // 复数列(rows) Sheet.getRange(row, column, numRows, numColumns) // 四边形范围 Sheet.getRange(a1Notation) // 以字串的方式使用 A1 或 R1C1 参照 Sheet.getRange() 吃四种参数形态设定作动范围,但後面接的方法就需要依前面范围 中的单、复数形态来选择。用错了就会报错(废言 .getValue() // 读取单一栏位值 .getValues() // 读取复数范围的值 .setValue(value) // 写入单一栏位 .setValues(array) // 范围写入 举例来说最下面例子中读取 A1 & B1 的部份 sheet.getRange(1, 1, 1, 2).getValues() 起始点为 row 1column 1,取 1 row2 columns 可替换成以 array 包装填入,getRange()中设定的范围大小必需等於填入的资料大小 // 读取 row 1, collumn 1 的 A1 栏位值 var a1 = sheet.getRanges(1, 1).getValue(); // 读取 B1 栏位的值 var b1 = sheet.getRange('B1').getValue(); // 将 a1, b1 包装成 Array object 直接送出 sheet.getRange(i + 1, 3, 1, 2).setValues([[a1, b1]]); 上面就是简单的操作 Google Spreadsheet 栏位资料(读/写)的基础方法。其它较进 阶的处理就上 查 Apps Script reference 了吧。 function myFunction() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var maxRows = sheet.getMaxRows(); var range = sheet.getRange(1 , 3 , maxRows , 2).getValues(); for (var i = 0; i < maxRows; i++) { // 阵列从零开始计 if (range[i][0] === '' && range[i][1] === '') { // 列(row)、栏(column)从一开始计 sheet.getRange(i + 1, 3, 1, 2).setValues( sheet.getRange(1, 1, 1, 2).getValues()); break; } } } function onOpen(e) { var ui = SpreadsheetApp.getUi(); ui.createMenu('Custom Menu') .addItem('Copy A1 B1 & Paste', 'myFunction') .addToUi(); } -- 人间五十年、化天のうちを比ぶれば、梦幻の如くなり ^,,,^ 一度生を享け、灭せぬもののあるべきか (ω)\m/ NOBUMETAL DEATH!!('ω') --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.230.194.76
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Google/M.1548400976.A.37F.html
1F:推 jikker: 推 认真好文 01/31 10:20







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Gossiping站内搜寻

TOP