お問い合わせ
    氏名

    メールアドレス

    件名

    お問い合わせ内容



    会員登録(無料)
    ログイン
    スキルアップは今すぐこちら!▶

    【Google Apps Script(GAS)入門】自動化!Googleフォームの回答内容を他のスプレッドシートにも自動転記する方法|openById

    GAS(グーグルアップススクリプト)
    この記事は約4分で読めます。

    Googleフォームから転記を自動化する

    内容をまとめた本はこちら▼

    初めてのGAS「Googleフォームの内容をGASで別シートに自動転記する方法 編」【2022年版】
    Amazon.co.jp: 初めてのGAS「Googleフォームの内容をGASで別シートに自動転記する方法 編」【2022年版】 eBook : EguchiYuuki: 本

    Googleフォームに回答があった時に、指定のGoogleスプレッドシートのシートにデータが送信されるように設定することができます。

    フォームを送信したら、フォームまたは Google スプレッドシートで個別に回答を収集できます。

    フォームの回答の保存先を選択する

    • Google フォームでフォームを開きます。
    • 左上の [回答] で、[概要] をクリックします。
    • 右上のその他アイコン その他次に [回答先を選択] をクリックします。
    • オプションを選択します。
    • 新しいスプレッドシートを作成: Google スプレッドシートで回答用のスプレッドシートを作成します。
    • 既存のスプレッドシートを選択: Google スプレッドシートで既存のスプレッドシートを選択して回答を保存します。
    • [作成] または [選択] をクリックします。
    • ヒント: 回答用のスプレッドシートには、Google スプレッドシートのホーム画面、Google スプレッドシート アプリ、Google ドライブからアクセスできます。
    • フォームを共有して回答を収集する>フォームの回答の保存先を選択する

    これを、フォームの送信があって、Googleシートに入力された時に、他のGoogleシートに転記することは可能か…?というお話です。

    自動化のイメージ

    1.フォームの回答があった時は「フォームの回答1」というシートにデータが自動的に入る。
    2.「フォームの回答1」というシートに自動的にデータが入った時に、別のスプレッドシートの「回答の転記」というシートの「末尾行」に自動的にデータが入力される。

    というシンプルな仕組みでいきたいと思います。

    Googleフォームで送信

    まずはGoogleフォームで送信をしてみます。

    送信があると、スプレッドシートの連結したシートに回答が入ります。

    このタイミングと同時に、別のファイルへ転記をしてみます。

    ということで、準備は終わったのでここからが本番です…!

    スクリプトエディタ

    まずは、スクリプトエディタを開きます。

    関数名を定義する

    まずは「PostToAnotherFile()」などの名前で、関数を作ります。

    ファイルを取得する

    それぞれのファイルを取得します。

    function PostToAnotherFile() {
    //今のアクティブファイルを取得する
    var ss1_copy = SpreadsheetApp.getActiveSpreadsheet()
    //転記先のスプレッドシートIDを入力する
    var ss2_copy_to = SpreadsheetApp.openById(“XXXXX(ID)”)

    これで、フォーム回答ファイルと転記先のファイルが取得できます。

    シートを取得

    それぞれのシートを取得します。

    // フォームの回答シート
    var s_name_from = ss1_copy.getSheetByName(‘フォームの回答 1’);
    // 転記先のシート
    var s_name_to = ss2_copy_to.getSheetByName(‘回答転記’);

    最終行+1行を取得

    //最終行+1行
    var lastRow_PlusOne = s_name_to.getLastRow() + 1

    転記先のシートには最終行+1(空白行)への転記が必要ですので、+1しています。

    転記元の最終行データを取得

    var data = s_name_from.getRange(s_name_from.getLastRow(), 1,1, s_name_from.getLastColumn()).getValues();

    getRangeで最終行のデータを取得します。
    引数は(最終行(位置)、1列目(位置)、1行分(行数)、最終列(列数))

    これで、最終行のデータが全てdata変数に格納されます。

    setValueで書き込み

    s_name_to.getRange(lastRow_PlusOne, 1,1,s_name_from.getLastColumn()).setValue(data);

    getRangeで転記先の(最終行+1行に、1列目から、 1行分、 転記元の列数分)転記元の最終行のデータをsetValue()で書き込みます。

    ??なぜか、1列目のデータが行の全てのセルに転記されてしまいます。

    dataの値はログを見る感じだと取れているので、setValue()に問題があるのかもしれません。

    まとめ

    長くなりそうでしたので、続きは別のページへ!!

    Googleスプレッドシートを使えば色々と自動化ができます!

    ご参考下さい(^o^)/

    内容をまとめた本はこちら▼

    初めてのGAS「Googleフォームの内容をGASで別シートに自動転記する方法 編」【2022年版】
    Amazon.co.jp: 初めてのGAS「Googleフォームの内容をGASで別シートに自動転記する方法 編」【2022年版】 eBook : EguchiYuuki: 本

    続きはこちら▼

    0 件のコメント

    コメント
    タイトルとURLをコピーしました