2017-12-19 13 views
1

GoogleのGoogleフォームのフォームレスポンス1タブに入力するGoogleフォームのチェックインフォームがあります。クライアントは短い名前でフルネームを入力します。私たちはZapierを使って、このシートからGoogle Contactsに連絡先を作成します。私の従業員が個人的な連絡先からクライアントを区別するために、私は姓と名の間のスペースに「クライアント」を挿入しようとしています。GoogleシートからGoogleフォームの送信時に名と姓の間に単語を挿入するスクリプト

新しい行でのみこれを行う方法はありますか?私が作成したfindとreplaceスクリプトは、古いエントリのスペースにClientを無限に挿入し続けるように繰り返します。 「underscoreClientunderscore」を使用すると、後で連絡先をエクスポートする必要がありますが、これでは名字を使用できません。

function replace() { 

    var range = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form 
    Responses 1").getRange("B:B"); 

    var v = range.getValues(); 
    for (var r = 0; r < v.length; ++r) { 
    v[r][0] = v[r][0].replace(/ /g, " Client "); 
    } 
    range.setValues(v); 
} 

答えて

0

文字列関数indexOf(searchstring)を使用して、クライアントという単語がすでにセルに存在するかどうかを確認できます。その場合は、セルをスキップし、それ以外の場合は変更します。

関数が文字列を見つけることができない場合、 "-1"を返します。以下のコードは、ifステートメントを使ってそれをチェックします。次のように 変更されたコードは次のとおりです。あなたがも達成することができます:私も少しだけ

最終的な思考列Bのすべての行の最後のエントリまでなく処理するためのコードを修正

function replace() { 

    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses 1") 
    var range = sheet.getRange(1, 2, sheet.getLastRow(), 1) 
    var v = range.getValues(); 
    for (var r = 0; r < v.length; ++r) { 
    if(v[r][0].indexOf(" Client ") == -1){ 
     v[r][0] = v[r][0].replace(/ /g, " Client "); 
    } 
    } 
    range.setValues(v); 
} 

このプロセスは、エントリが installable triggersを使用してサブミットされると自動的に、 event objectsを使用して最新のエントリだけを実行するという利点があります。 希望に役立ちます!

+0

それは魅力的に機能しました!どうもありがとうございます!!! – COlson

関連する問題