短い答え
リンク 2つの答えを持っているQ&Aのポイントが、それら以外のappropiateであることを私には見えます。IEのいずれかの回答のコードは不完全であり、どちらもメールを送信するため、導入は複雑すぎて開始点として使用できません。
以下は、より簡単に採用できるスクリプトです。
指示
テストフォームを作成し、フォームID(URL 間../d/
と/edit
URL内)をメモします。
新しいスプレッドシートに応答を送信するようにフォームを設定します。
新しいスプレッドシートにリダイレクトされます。アクティブなシート名をメモし(必要に応じて名前を変更)、応答編集URLを保持するために使用するヘッダーを列に追加しますEdit Url
。注:大文字と小文字は非常に重要なので、どのように書くかには十分注意してください。
に移動しTools > Script editor
て、スプレッドシートにバインドされたGoogle Apps Scriptプロジェクトを追加します。
デフォルトのコードを以下のコードに置き換えます(必要に応じて、グローバル変数を編集してください)。
プロジェクトを保存して、インストール可能なフォームサミットトリガーを追加します([承認が必要]ダイアログが表示された場合は、[権限の確認]をクリックしてから[許可]をクリックします)。
ソリューションをテストするためにいくつかのサンプル応答を送信します。
コード
/*
* Global Variables
*/
// Form URL
var formURL = 'https://docs.google.com/forms/d/form-id/viewform';
// Sheet name used as destination of the form responses
var sheetName = 'Form Responses 1';
/*
* Name of the column to be used to hold the response edit URLs
* It should match exactly the header of the related column,
* otherwise it will do nothing.
*/
var columnName = 'Edit Url' ;
// Responses starting row
var startRow = 2;
function getEditResponseUrls(){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
var columnIndex = headers[0].indexOf(columnName);
var data = sheet.getDataRange().getValues();
var form = FormApp.openByUrl(formURL);
for(var i = startRow-1; i < data.length; i++) {
if(data[i][0] != '' && data[i][columnIndex] == '') {
var timestamp = data[i][0];
var formSubmitted = form.getResponses(timestamp);
if(formSubmitted.length < 1) continue;
var editResponseUrl = formSubmitted[0].getEditResponseUrl();
sheet.getRange(i+1, columnIndex+1).setValue(editResponseUrl);
}
}
}
追加のリソース
質疑応答の内容で要旨を作成しました。このb / c私は、コードを作成するエンドユーザー間でのコラボレーションを改善する方法を模索しています。