【发布时间】:2019-04-26 23:35:55
【问题描述】:
代码已完成谢谢@TheMaster ✔
我是 google drive sdk 的绝对新手,对不起。
我正在尝试编写一个脚本,它允许许多与更新相同的工作表。通过源电子表格(使用新格式)。问题是在旧工作表中,值在那里,必须在新工作表“源电子表格”(具有新格式)中。然后一遍又一遍地用一张旧纸重复一遍。
我心中的脚本程序:
-
转到许多工作表所在的文件夹✔ -
打开第一张纸,然后总是下一张✔ -
从区域(A1:A2;C1:C2)获取数据✔ -
取床单的名字✔ -
将它们复制到源电子表格中的数据中的同一位置✔ -
复制源电子表格✔ -
将源电子表格命名为旧工作表✔ -
重命名并放在另一个文件夹中✔
我会在力所能及的地方提供帮助。
当前代码:
function UPDATE() {
//LEGEND: o=Old, ss=SpreadSheet, sss=SourceSreadSheet, s=Sheet, n=Name//
//---TAKE ALL OLD SPREADSHEEDS FROM FOLDER ---//
//replace it with Folder ID where the old spreadsheets are in
var folder=DriveApp.getFolderById('Folder ID')
//takes all files in the folder and sets the variable file
var files=folder.getFiles();
while (files.hasNext())
{
var file = files.next();
//---TAKE DATA---//
//replace with source ID
var o_ss=SpreadsheetApp.open(file);
//replace with source Sheet tab name 1 to as much as you want
var o_s_n1=o_ss.getSheetByName('tab name1');
var o_s_n2=o_ss.getSheetByName('tab name2'); //optional
//assign one ore more ranges you want to copy
var o_range1=o_s_n1.getRange('A1:A2');
var o_range2=o_s_n1.getRange('C1:C2'); //optional
//Copy the values
var o_data1=o_range1.getValues();
var o_data2=o_range2.getValues(); //optional
//---COPY DATA---//
//replace with destination ID
var sss_ss=SpreadsheetApp.openById('destination ID');
//replace with destination Sheet tab name
var sss_s=sss_ss.getSheetByName('tab name1');
//Area where to copy in the new sheet
sss_s.getRange('A1:A2').setValues(o_data1);
sss_s.getRange('C1:C2').setValues(o_data2); //optional
//closes the code until here first
SpreadsheetApp.flush();
//---DUPLIKATE SOURCE SHEET AND RENAME IT AND PUT IT IN THE DESTINATION FOLDER---//
//gets the sheet name from the old sheet
var o_ss_n=o_ss.getName();
//replace with destination Folder ID
var folder=DriveApp.getFolderById('Folder ID')
//Copy the destination sheet and name it like the old sheet
DriveApp.getFileById('destination ID').makeCopy(o_ss_n,folder);
}
}
【问题讨论】:
-
尝试您的梦想,如果遇到特定问题,请提供minimal reproducible example
-
@TheMaster 我已经更新了我的代码,我没有得到重复功能,你还有什么想法吗?在这里使用flush()会不会很好?
-
您将首先获取文件夹 > 然后在 while 循环内执行您为文件夹中的所有文件编写的此函数。见第一个例子here
-
@TheMaster 现在他将文件夹中的所有文件复制并复制,但他没有从电子表格中获取区域。这里有什么问题?你必须用数组来做吗?
-
@TheMaster 该代码有效,但它不会从旧表中获取范围并将它们复制到新电子表格中。到底哪里出错了?
标签: google-apps-script google-sheets google-drive-api