助けが必要です - ここにちょっとした歴史があります..
Google スケジュールがあります - https://docs.google.com/spreadsheet/ccc?key=0ArmKEmhue9OgdEFwMHBldFpGenNVdzJUQThCQU9Qcmc&usp=sharing
そのスケジュール内には多数のシートがありますが、私が助けを得たいと思っていたのは Form Responses 1 と PROJECTS シートです
私はGoogleフォームを持っています - https://docs.google.com/forms/d/1yFy3i5H3abhFjdvchuJq2ARODcfRGo6KNkOAgeRIMMU/viewform
これは Google のスケジュールにリンクされており、送信ごとにデータが Form Responses 1 シートに入ります -
スプレッドシートに適用されるスクリプトがあります -
スクリプトへの/からのコピー
/**
* A function named onEdit will be called whenever
* a change is made to the spreadsheet.
*
* @param {object} e The edit event (not used in this case)
*/
function onFormSubmit(e){
var copyFromRange = 'Form Responses 1!A2:AC999';
var copyToRangeStart = 'PROJECTS!A71:AC999';
copyValuesOnly(copyFromRange, copyToRangeStart);
}
/**
* This function will copy the values from a given range to
* a second range, which starts from the given cell reference
*
* @param {string} copyFromRange Range reference eg:
* @param {string} copyToRangeStart Cell reference eg:
*/
function copyValuesOnly(copyFromRange, copyToRangeStart) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var source = ss.getRange(copyFromRange);
source.copyTo(ss.getRange(copyToRangeStart), {contentsOnly: true});
}
これにより、データを PROJECTS シートにコピーできるようになるため、複数のユーザーが編集および更新できますが、新しい提出物が届くたびにデータが上書きされることに気付きました
また、フォーム応答 1 シートの C 列「プロジェクト番号」の下にあることに注意してください。フォーラム =ArrayFormula("MC"&TEXT(ROW(A2:A)-1 ; "000") ) があり、自動的に許可するように配置しました。プロジェクト番号で各提出物に番号を付ける
ARCHIVEスクリプトもあります-
プロジェクトが完成したら、列 G の「アーカイブ」の下に「DONE」と入力すると、ARCHIVE シートに移動します。
関数 onEdit() {
// moves a row from a sheet to another when a magic value is entered in a column
// adjust the following variables to fit your needs
// see https://productforums.google.com/d/topic/docs/ehoCZjFPBao/discussion
var sheetNameToWatch1 = "PROJECTS";
var sheetNameToWatch2 = "ADVERTISING";
var columnNumberToWatch = 7; // column A = 1, B = 2, etc.
var valueToWatch = "DONE";
var sheetNameToMoveTheRowTo = "ARCHIVE";
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getActiveCell();
if ( (sheet.getName() == sheetNameToWatch1 || sheet.getName() == sheetNameToWatch2) && range.getColumn() == columnNumberToWatch && range.getValue() == valueToWatch) {
var targetSheet = ss.getSheetByName(sheetNameToMoveTheRowTo);
var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).moveTo(targetRange);
sheet.deleteRow(range.getRow());
}
}
問題 -コピー- フォームを使用して新しい提出物が入力されると、データは Form Responses 1 シートに入ってから PROJECTS シートにコピーされますが、各提出物は編集を上書きし、元のフォーム提出物データを取り込むため、PROJECTS の下のデータを編集することはできません-
私が望んでいるのは、データが Form Responses 1 シートに入ってから、提出ごとに PROJECTS シートにコピーされますが、新しい提出物が入ったときに上書きされず、PROJECTS の下のデータへの変更はそこにとどまることです。
問題 - プロジェクト番号- Form Responses 1 シートの下の列 C 行 2 の下に設定された数式 - 各行にはプロジェクト番号が割り当てられており、行がアーカイブ (「完了」) されて ARCHIVE に移動すると、PROJECTS シートにコピーされます。シートのその行に割り当てられたプロジェクト番号はそれに伴いますが、新しいプロジェクトを送信すると、同じ番号が新しいプロジェクトに適用される可能性があるため、最終的にすべてのプロジェクトをアーカイブすると、多くのプロジェクトが同じプロジェクト番号を持つことになります。方法はありますか?各プロジェクトに一意のプロジェクト番号を持たせるには?
*問題 - 送信フォーム * - 理由はわかりませんが、新しい送信が行われると、フォームの応答行の最後ではなく、毎回 113 行目にデータが送信されますか?
どんな助けでも大歓迎です-私はそれがうまくいくと思っていましたが、スクリプトは私がやりたいことに対して正しい設定ではないようです
どうもありがとう、パオラG