Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 如何在Google Sheets中修改使用脚本创建的选项卡中的单元格内容_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 如何在Google Sheets中修改使用脚本创建的选项卡中的单元格内容

Google apps script 如何在Google Sheets中修改使用脚本创建的选项卡中的单元格内容,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我完全是应用程序脚本的初学者,但我可以理解语言,并将我在这里和那里获取的代码片段粘贴在一起;-) 通过浏览该网站,我已经找到了创建菜单项以触发函数的方法,以及复制模板选项卡并使用数据表中某个范围的数据重命名每个副本的方法(耶!)。 由于我的编码技能非常基础,我只缺少一件我在任何地方都找不到的东西:如何更改模板副本单元格A4中的值并将其与模板副本匹配。 多亏了各种线程,我成功地拼凑了以下代码: 函数onOpen(){ SpreadsheetApp.getUi().createMenu(“我的菜单

我完全是应用程序脚本的初学者,但我可以理解语言,并将我在这里和那里获取的代码片段粘贴在一起;-) 通过浏览该网站,我已经找到了创建菜单项以触发函数的方法,以及复制模板选项卡并使用数据表中某个范围的数据重命名每个副本的方法(耶!)。 由于我的编码技能非常基础,我只缺少一件我在任何地方都找不到的东西:如何更改模板副本单元格A4中的值并将其与模板副本匹配。 多亏了各种线程,我成功地拼凑了以下代码:

函数onOpen(){ SpreadsheetApp.getUi().createMenu(“我的菜单”) .addItem('创建新选项卡','模板复制') .addToUi()} 函数templateReplication() { var ss=SpreadsheetApp.getActiveSpreadsheet(), temp=ss.getSheetByName('Template'), all=ss.getSheetByName(“催化剂数据”), sheets=ss.getSheets(), VAL=all.getRange('a2:a').getValues(); 对于(var i=0,len=sheets.length,names=[];i0;i--) { var名称=VAL[i][0]; if(name!=''&&names.indexOf(name)=-1) { 温度激活(); ss.duplicateActiveSheet() .setName(VAL[i][0])
}}据我所知,您需要在末尾添加一行(就在
.setName(vals[I][0])
之后):


恰到好处。因为您正在学习编码

这些循环用于生成一个数组并使用另一个数组中的某些值填充该数组:

for (var i = 0, len = sheets.length, names = []; i < len; i++)
    names.push(sheets[i].getName());

一旦你习惯了它,它看起来更干净、更简单。

我使用了小写字母t而不是大写字母,所以将copyto改为copytohk很多,库珀,我实际上实现了尤里的方法,我还没有测试你的代码。你认为你在这里写的东西可以取代其他东西吗?看起来比我加起来的要整洁(轻度强迫症,我喜欢整洁,非常感谢Yuri,对于一个流利的人来说,这可能看起来很简单,但我可以一直搜索……好吧。现在你可以接受答案了:也谢谢你,我更换了字符串,效果很好。唯一奇怪的是,在复制了所有标签后,当我试图打开任何标签时,我都会感到非常担心通知上写着“无法加载内容,请尝试刷新”或类似的内容,但在刷新页面后,一切正常。再次感谢,我非常高兴,实际上,可能只是一个小故障,我再次运行了它,没有任何错误消息,完全正常。再次感谢
function TemplateDuplication() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const temp = ss.getSheetByName('Template');
  const all = ss.getSheetByName('Catalysts data');
  const shts = ss.getSheets().map(sh => sh.getName());
  const vals = all.getRange(2, 1, all.getLastRow() - 1).getValues();
  var names = [];
  vals.forEach((r,i) =>{
    if(!~names.indexOf(r[0])) {
      temp.copyTo(ss).setName(r[0]).getRange('A4').setValue(r[0]);
    }
  });
}
for (var i = 0, len = sheets.length, names = []; i < len; i++)
    names.push(sheets[i].getName());
var names = sheets.map(x => x.getName());