问题描述
我有2个不同的脚本,第一个拷贝当我选择从下拉列表中的片材的名称并将其粘贴在片材具有该名称的行,第二脚本是一个复选框,然后复制打勾时整行到另一张工作表,并将其从原始工作表中删除。因此,在我首先从下拉菜单中选择该选项,然后选中该行应复制到2个不同工作表的复选框之前。
我的麻烦是,尽管这两个脚本在单独运行时都可以工作,但是当我同时拥有这两个脚本时,它们都无法工作。
脚本1
<div class="col-md-12">
<?= $this->Form->create($mail) ?>
<fieldset>
<legend><?= __('Add Mail') ?></legend>
<?php
echo $this->Form->control('Subject',['class' => 'form-control','type' => 'text']);
echo $this->Form->control('Body',['class' => 'form-control']);
echo $this->Form->control('Attachment');
?>
<select id="catagory" data-child="family" class="form-control" name="Priority">
<option value="Normal">Normal</option>
<option value="High">High</option>
</select>
<br>
<div class="resume-box">
<div class="col-md-6"><input type="text" class="form-control" placeholder="Search"></div><br><br>
<fieldset>
<legend><?php __('Users');?></legend>
<?php
foreach ($Ulist as $grades):
/*
if($grades->PId != 0){
echo "<label>";
echo $this->Form->checkbox('Mail.'.$grades['id'].'ReceptionistId[]',array('value'=>$grades['PId'],'multiple' => 'checkbox'));
echo $grades->username. "</label>";
}
*/
// output all the checkboxes at once
echo $this->Form->checkbox('ReceptionistId',array(
'label' => __('ReceptionistId',true),'type' => 'select','multiple' => 'checkbox','options' => $grades->PId,));
/*
// output all the checkboxes individually
$checked = $form->value('Tag.Tag');
echo $form->label(__('Tags',true));
foreach ($tags as $id=>$label) {
echo $form->input("Tag.checkbox.$id",array(
'label'=>$label,'type'=>'checkbox','checked'=>(isset($checked[$id])?'checked':false),));
}
*/
endforeach;
?>
</fieldset>
</div>
</fieldset><br>
<?= $this->Form->button(__('Submit'),['class' => 'btn btn-success']) ?>
<?= $this->Form->end() ?>
</div>
脚本2
function onEdit(e) {
var sh=e.range.getSheet();
if(sh.getName()=='Approval' && e.range.columnStart==11) {
var v=sh.getRange(e.range.rowStart,1,sh.getLastColumn()).getValues();
var tsh=e.source.getSheetByName(e.value);
if(tsh) {
tsh.getRange(tsh.getLastRow() + 1,v[0].length).setValues(v);
}
}
}
我已经看过脚本合并,但是我的头要花时间,所以任何帮助都将不胜感激。
解决方法
您不能具有两个或多个onEdit()
触发器。但是您可以执行以下简单的解决方法。在脚本中添加以下功能:
function onEdit(e) {
onEdit1(e)
onEdit2(e)
}
然后,按如下所示修改脚本:
脚本1:
function onEdit1(e) {
var sh=e.range.getSheet();
if(sh.getName()=='Approval' && e.range.columnStart==11) {
var v=sh.getRange(e.range.rowStart,1,sh.getLastColumn()).getValues();
var tsh=e.source.getSheetByName(e.value);
if(tsh) {
tsh.getRange(tsh.getLastRow() + 1,v[0].length).setValues(v);
}
}
}
脚本2:
function onEdit2(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "Approval" && r.getColumn() == 12 && r.getValue() == true) {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("ZSD Sheet");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1,1);
s.getRange(row,numColumns).moveTo(target);
s.deleteRow(row);
}
}