如何重命名Google电子表格(文件)并使用工作表中的值填充其内容

时间:2017-03-19 06:30:16

标签: javascript arrays loops google-apps-script google-sheets

希望拥有以下Google电子表格功能,其中(1)重命名电子表格(目标文件),并且(2)根据另一个电子表格(源文件)中包含的值填充其中一张表格,从第二个开始循环向前排,直到列出的所有电子表格都已重命名并填充。

重命名目标文件所需的所有值都在单元格范围D2中:D。

填充目标文件所需的所有值都在单元格范围A2:D

目标文件的所有ID都在单元格范围G2:G。

第二行和最后一个包含数据的行之间和之间没有空行,并且将使用包含此范围内数据的所有行。每个列(A,B,C,D,G)具有相同数量的包含数据的行。

包含要使用的条目的行数的值在单元格区域E1中,如果有任何用途(在此函数中未使用)。

function rnmCpyRngTo() {
  //rename target spreadsheet and populate range
  //in target sheet from values in source spreadsheet
     //get source sheet in source spreadsheet
     var ssss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("CopyToWrdLists");
     //get source cell range containing value of name to be given to target spreadsheet            
     var scrvn = ssss.getRange("D2").getValue();
     //get source cell range containing values to copy to target sheet cell range
     var scrvr = ssss.getRange("A2:D2").getValues();
     //get source cell range containing values of target spreadsheet ID
     var scrvid = ssss.getRange("G2").getValue();  
     //get target spreadsheet ID
     var tssid = DriveApp.getFileById(scrvid); 
     //get target sheet
     var tss = SpreadsheetApp.openById(scrvid).getSheetByName("Wordlist"); 
     //rename target spreadsheet
     tssid.setName(scrvn); 
     //copy values to target sheet cell range
     tss.getRange(1, 1, scrvr.length, scrvr[0].length).setValues(scrvr);
}

问题15616530似乎接近预期的结果但无法修改以适应。非常感谢帮助。

添加了:

     //get source cell range containing values of target spreadsheet ID
     var scrvid = ssss.getRange("G2").getValues();

源表已经共享here,因此任何有链接的人都可以编辑。

假设您已登录Google,则此folder已被共享。

  1. 文件夹“Target_Spreadsheet”应该
  2. 从用户菜单“Wordlists”运行脚本“创建单词列表 - TOMS”以创建文档,
  3. 从用户菜单中运行“重命名和填充 - TOMS”功能,仅重命名和填充第一个列出的文件。
  4. 根据需要重复。这就是我要做的。

    感谢。

1 个答案:

答案 0 :(得分:1)

这应该可以解决问题,只需将代码置于for循环中:

function rnmCpyRngTo() {
  //rename target spreadsheet and populate range
  //in target sheet from values in source spreadsheet
     //get source sheet in source spreadsheet
     var ssss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("CopyToWrdLists");
     //get source cell range containing value of name to be given to target spreadsheet 
     var data = ssss.getDataRange().getValues()        // All the data in sheet, since there not empty rows. 
     Logger.log(data)
     var dataLength = data[0][4]                       // Get number of rows from cell E1, can use data.length instead
     for (var i = 1; i <= dataLength ; i++){           // If you rather use data.length change the condition to i < data.length
       var scrvn = data[i][3]                    // Get Rename value
       var scrvr = [] 
       scrvr[0] = data[i].slice(0, 4)            // Get Copy Values
       var scrvid = data[i][6]                   // Get of SpdSheet
       var tss = SpreadsheetApp.openById(scrvid) // Get Spreadsheet
       tss.rename(scrvn)                         // Rename Spreadsheet
       Logger.log(scrvr)
       tss.getSheetByName("Wordlist").getRange(1, 1, scrvr.length,scrvr[0].length).setValues(scrvr)  // Set Copy Values to the sheet

     }

}

希望它有所帮助!