プロが教える店舗&オフィスのセキュリティ対策術

グーグルフォームを使用し、送信されてきた回答をスプレッドシートで管理しています。

ごくたまにですが、同じ内容を同じ人から送信されてくることがあり、確認すると一度しか送信していないとのことです。
スプレッドシートに送信されてくるタイムスタンプも 2021/02/24 8:10:10 と 2021/02/24 8:10:45 とがあり、間違って同様の内容を送信するには35秒では無理な内容です。

グーグルフォーム→スプレッドシート間で重複してしまった・・・としか思えないのですが、重複しないようにする方法もわからない状態です。

そこで別のタブを作成し、1分以内に送信されてきたもので、ある列の部分が同様の内容だったら重複と判断して表示させるものを作成したいのですが、どのようにすればこういったことが可能かご教授願いたいです。

≪例≫
フォームの回答 タブ
A列          B列    C列
タイムスタンプ     品物    個数
2021/02/24 8:10:10  りんご   3個
2021/02/24 8:10:45  りんご   3個
2021/02/24 8:15:20  スイカ   1個
2021/02/24 8:38:10  りんご   3個


重複 タブ
A列          B列    C列
タイムスタンプ     品物    個数
2021/02/24 8:10:10  りんご   3個
2021/02/24 8:10:45  りんご   3個

→タイムスタンプが1分以内で、B列、C列が同じ場合のみ表示される

A 回答 (1件)

1. Google ドライブ を開き、[新規][Google スプレッドシート]を選択して「無題のスプレッドシート」を開きます。


2. 質問の以下のデータ内容を再現します。
A列          B列    C列
タイムスタンプ     品物    個数
2021/02/24 8:10:10  りんご   3個
2021/02/24 8:10:45  りんご   3個
2021/02/24 8:15:20  スイカ   1個
2021/02/24 8:38:10  りんご   3個
3. [ツール][スクリプト エディタ]を選んで「無題のプロジェクト」を開きます。
4. すでに記入されているスクリプトを削除して、以下のスクリプトを貼り付けます。
function myFunction() {
// スプレッドシートを取得する
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();// Container Bound Script
var sheet = spreadsheet.getSheets()[0];// シート数を指定して取得
var lastRow = sheet.getLastRow();
// 重複記入をリセットする
var table = sheet.getRange(2, 4, lastRow-1, 1).clearContent();
// フォームデータを読み込む
var table = sheet.getRange(2, 1, lastRow-1, 3).getValues();
// データが1つ以下なら処理を終了する
if (table.length <= 1) {
return;
}
// データを比較して重複を調べる
for (var i=0; i < table.length; i++) {
var row = i + 3;
var basisDate = table[i][0];
var basisData1 = table[i][1];
var basisData2 = table[i][2];
var targetDate = table[i+1][0];
var targetData1 = table[i+1][1];
var targetData2 = table[i+1][2];
if (((targetDate - basisDate) / 1000) <= 60) {
if (basisData1==targetData1 && basisData2==targetData2) {
// 重複を記入する
sheet.getRange(row, 4).setValue('重複');
}
}
// 最後のデータなら終了する
if (i==table.length-2) {
break;
}
}
}
5. [保存]ボタンを押下して、「myFunction」を選び、[▷ 実行]を押下します。
6. D列に「重複」が記入されます。
「スプレッドシートで数分以内の送信を重複と」の回答画像1
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!