質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

1回答

2485閲覧

GAS ある条件下での任意の空白セルへの他セルのコピー&ペースト

SATO88

総合スコア1

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

0クリップ

投稿2021/11/19 07:05

編集2021/11/19 12:18

前提・実現したいこと

毎朝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,任意の列数)); }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Googleformの回答のタイムスタンプの列からINTでyyyy/mm/ddのみ抽出する

の部分のみで良ければ、以下1-4で実現出来ますよ。

[1]回答が蓄積されるスプレッドシート を開く
[2]ツール>スクリプトエディタ を開く
[3]コードを貼り付け(myColの"5"はアンケート登録日を入れたい列番号に変更して)

GAS

1function test(e) { 2 const myCol = 5; // アンケートが投稿された日付を入れたい列番号 3 e.range.getSheet().getRange(e.range.getLastRow(), myCol).setValue(Utilities.formatDate(new Date(), "Asia/Tokyo", "yyyy/MM/dd")) 4};

[4]トリガー追加(イベントの種類を選択 は フォーム送信時 にする)

*ご希望とずれてるかもしれません…mm
*Form側にバインドされたスクリプトも残す必要あれば、分担は整理して下さいmm

投稿2021/11/19 14:11

mmkkmm

総合スコア103

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

SATO88

2021/11/20 00:47

ご回答頂きありがとうございます!回答が集中しない時間帯では正常に動作するようです!数日の間フォームのスクリプトのトリガーを削除し、ご教示頂いたスクリプトで動作を確認してみます!
SATO88

2021/11/22 08:14

ご教示頂いたスクリプトで、無事に解決できました!大変助かりました、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問