セルをコピーするためのスクリプトを作成しました* OnEdit(シート2のcol16) Col16 = "はい")(今Col4)のカスタム列の最後の行に。しかし、私はというクエリベースのデータを持っているので、私のスクリプトは手で "はい"と入力したときにのみデータをコピーします。だからこそ私はこのスクリプトをボタンで実行する必要があります。あるいは、時間駆動のトリガーとして実行する必要があります。ボタンで動作させることはできません。ボタンをクリックして作業できるようにするには、次のスクリプトをどのように変更するのですか?OnEditスクリプトをRun-by-buttonスクリプトに変換する方法(ルールで1つのシートから別のシートにセルをコピーする)
function onEdit(e) {
var ss = SpreadsheetApp.getActive();
var sheet = ss.getActiveSheet();
if (sheet.getName() !== '2' || e.range.getColumn() !== 16 || e.value !== 'Yes') return;
var value = e.range.offset(0,-12,1,1).getValue();
sheet = e.source.getSheetByName('1');
var grd = sheet.getRange("D:D").getValues();
var maxIndex = grd.reduce(function(maxIndex, row, index) {
return row[0] === "" ? maxIndex : index;
}, 0);
sheet.getRange(maxIndex+2,e.range.getColumn()-12,1,1).setValue(value);
}
UPDATE:私は、このように私のスクリプトを変更しようとしたボタンにそれを割り当てた、それは「.....その後、完成した実行中...」と言うが、それをボタン - 上のクリックした後(ただし、OnEdit(e)のときに動作し、エラーは発生しません) しかし、 "OnEdit(e)"を "copymissings()"に変更するだけでは十分ではないようです。コードで何かが、私は正確に何を知らない助けてください:。
function copymissings() {
var s = SpreadsheetApp.getActive();
if (s.getName() !== '2' || range.getColumn() !== 16 || value !== 'Yes') return;
var value = range.offset(0,-12,1,1).getValues();
sht = s.getSheetByName('1');
var grd = sheet.getRange("D:D").getValues();
var maxIndex = grd.reduce(function(maxIndex, row, index) {
return row[0] === "" ? maxIndex : index;
}, 0);
sht.getRange(maxIndex+2,range.getColumn()-12,1,1).setValues(value);
}
が可視化: CLICK TO SEE GIF
可能な重複[アプリのスクリプトを使用して、Googleスプレッドシートのセル内のUIを追加するにはどうすればよい?](https://stackoverflow.com/questions/6876819/how-do-you-add-ui-inside -cells-in-a-google-spreadsheet-using-app-script) –
ボタンで実行できないということはどういう意味ですか?何を試しましたか?エラーメッセージが表示されましたか? –
こんにちは、私の投稿を更新しました – Stz