取出儲存格範圍內的值
語法:
getSheetValues(startRow, startColumn, numRows, numColumns)
getSheetValues(起始列號,起始行號,列展延量,行展延量)
準備工作:
請在A2:H8內輸入任意內容,接下來再進入 工具 / 指令碼編輯器內將以下的代碼COPY貼上
//**** 取出儲存格範圍內的值 //getSheetValues(startRow, startColumn, numRows, numColumns) //適用於取出有範圍的儲存格 //這個方法取出的值Values,可以先下用setValue 方法(記住沒有s喔)看一下格式全貌 或 用 Logger.log(values);來檢視 //樣貌如後 [14-01-23 00:02:52:601 HKT] [[*車種*, *車次*, *經由*, *發車站->終點站*, *臺北開車時間*, *花蓮到達時間*, *行駛時間*, *備註*], //[自強, 202.0, -, 樹林->花蓮, -693958.7430555555, -693958.65625, 02小時05分, 逢週一、五至日行駛。新自強號(普悠瑪)列車,不發售無座票。], function testrun(){ var ss = SpreadsheetApp.getActiveSpreadsheet();//指定工作簿 var sheet = ss.getSheets()[1];//指定工作表 //var cell=sheet.getRange("A21:H28");//這個表示法與 var cell=sheet.getRange(21, 1, 7, 8);相同 var values= sheet.getSheetValues(2, 1, 7, 8);//取得來源儲存格範圍內的值 var cell=sheet.getRange(21, 1, 7, 8);//指定目地儲存格範圍 cell.setValues(values);//要讓資料自動展開,不可用cell.setValue(values),不然不會分解值,會全部放在第一個儲存格 //Logger.log(values); }這段代碼同時演示了[取值]與[賦值]的方法,
var cell=sheet.getRange(21, 1, 7, 8);這行代碼中的7、8因為必須與 values二維陣列變數大小一致,所以可以改寫成
var cell=sheet.getRange(21, 1, values.length, values[0].length);
其餘的在代碼內已有說明語法請自行演練,以下是我跑出來的結果
感謝您的教學文章~
回覆刪除實際執行上遭遇了一些問題,想跟您請教:
執行到getSheetValues那行時,出現了"TypeError: 無法呼叫 undefined 的「getSheetValues」方法",請問這是正常狀況嗎?重新run了幾次都無法順利執行....
作者已經移除這則留言。
回覆刪除請問sheet.getSheetValues(),
回覆刪除如果這欄位的值又有參考到別的欄位,
有時會無法捉到資料,是否有改善的方法 ?
謝謝 !