前提・実現したいこと
毎朝100件程度回答があるGoogleformの回答スプレッドシートに対し、
1)任意の列の空白セルを下方向に検索する。(仮にAとする)
2)Aの左隣のセルが空白だった場合、Aの一つ上のセルの内容(関数)をAにコピーする
というスクリプトを組みたいと考えています。
任意の列に対し、Googleformの回答のタイムスタンプの列からINTでyyyy/mm/ddのみ
抽出することを、スプレッドシートが開くことをトリガーに実行したいというものです。
発生している問題・エラーメッセージ
1)まではネット上の情報などを参考になんとかかけたのですが、セルのコピーがうまくいきません。
解決策について、ご教示頂きたくお願いします。
該当のソースコード
function datacopy() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート名'); //O列の一番下のセルを検索 var cell = sheet.getRange(1,任意の列数).getNextDataCell(SpreadsheetApp.Direction.DOWN).activate(); //O列の一番下のセルの一つ下のセルに移動(cell) var blnk = cell.offset(1,0).activate(); //O列一番下の空白セルの左隣のセルの値を取得(rng) var rng = blnk.offset(0,-1).getValue(); //rngがnullでなければcellからblnkにセルの内容をコピー if(rng == null){ cell.copyTo(blnk); }else{}
試したこと
現在は、スプレッドシートではなく、Googleformに対し、回答の送信をトリガーにして以下のスクリプトを
実行するようにしています。
しかし、これだと回答があった後に数式のコピーが完了する前に次の回答があった場合、処理が止まって
しまうという問題が起きています。
function myFunction() { var id = "スプレッドシートのID"; var ss = SpreadsheetApp.openById(id); var sh = ss.getSheetByName("シート名"); var lr = sh.getLastRow(); sh.getRange(lr-1,任意の列数).copyTo(sh.getRange(lr,任意の列数)); }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/20 00:47
2021/11/22 08:14