[英]Google script write one cell to range i nanother Spreadsheet
在這里拉我的頭發。
我正在嘗試在Google表格上構建“類似於數據庫”的結構(修改一個文檔中的條目,然后在其他位置進行更新)。
找不到范圍(第10行,文件“代碼”)
我究竟做錯了什么?
function ImportDataRange() {
var activeSs = SpreadsheetApp.getActiveSpreadsheet();
var sheet = activeSs.getSheetByName("PRODUCT dashboard");
var ssOrigin = SpreadsheetApp.openById("1gF-IsnPdnjAaoUSwOOaBfWTmK1eVzxDG87XPzjjsWxA");
var sheetOrigin = ssOrigin.getSheetByName("INITIAL_BUDGETS");
for (var i = 7; i < 26; i++) {
var rangeOrigin = sheetOrigin.getRange("i, 1");
var dataOrigin = rangeOrigin.getValues();
for (var i = 10; i < 275; i += 6) {
sheet.getRange("i, 1").setValues(dataOrigin);
}
}
}
您可能知道了,但是我需要:將document1的A7復制到document2的15個單元格中,然后將document1復制的A8單元格復制到document2的下一個15個單元格中,然后取A9...。
這是我的處理方式:
function ImportDataRange() {
var activeSs = SpreadsheetApp.getActiveSpreadsheet(),
sheet = activeSs.getSheetByName("PRODUCT dashboard"),
rangeSheet = sheet.getRange(10, 1, 265), // 3rd number is the number of rows to get into the range, as described in documentation
valsSheet = rangeSheet.getValues(); //Get all values in a double array, this is to keep any previous values in the sheet, also it already gets the array just as it is needed to use in setValues()
ssOrigin = SpreadsheetApp.openById("1gF-IsnPdnjAaoUSwOOaBfWTmK1eVzxDG87XPzjjsWxA"),
valsOrigin = ssOrigin.getRange(7, 1, 15).getValues(), // Same as the other getRange, gets 15 lines, starting in line 7
sheetOrigin = ssOrigin.getSheetByName("INITIAL_BUDGETS");
for ( origins in valsOrigin ) { // For each value in the valsOrigin array, do something -> in each loop origins will be the next index, Eg. 0, then 1, then 2...
for (var i = 10; i < 275; i += 6) {
i = (+i) + (+origins); // Add the origins so it don't begin in the same line, altough it will start to overwrite after 6 loops, you should look into this logic - also, the '+' converts it to number, as they can be strings
valsSheet[i][0] = valsOrigin[origins][0]; // Puts the current value of origins in the target array
}
}
rangeSheet.setValues( valsSheet ); // Inserts all values at once in the range
}
盡量減少SpreadsheetApp調用,這些調用很耗時,而且在GAS中受到限制,這也使代碼更簡潔。
不用getRange()參數中的引號,您就不用字符串了。 只需要.getRange(i, 0)
。
另外,如果只是將一個單元格作為范圍和一個設置值,則可以使用.setValue()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.