2012-05-08 7 views
14

Tôi có một bảng tính chính và một số bản sao. Bảng tính chính này sử dụng một số tập lệnh.Có thể có một tập lệnh cho nhiều bảng tính không?

Có thể liên kết tất cả các bản sao của bảng tính chính này với cùng một tập lệnh như trong bảng tính chính không?

Mục tiêu:

  • thay đổi trong kịch bản trong bảng tính chủ sẽ tự động được sử dụng bởi các bản
  • aka: bảo trì thấp
+0

allthough bạn không nên làm một bình luận như: Câu hỏi verry tốt! – haemse

Trả lời

17

amleczko là đúng: bạn nên sử dụng tính năng thư viện mới trong kịch bản Google Apps.

Tuy nhiên, tính đến hôm nay, bạn sẽ không thể thực hiện chính xác những gì bạn muốn (sử dụng cùng một tập lệnh cho một số bảng tính). Thay vào đó, những gì bạn có thể làm là lưu phiên bản tập lệnh của bạn (Tệp> Quản lý phiên bản ...), để tạo thư viện. Sau đó, nhập thư viện này vào các bảng tính khác (Tài nguyên> Quản lý Thư viện ...). Bật "chế độ phát triển" để mọi thay đổi được thực hiện làm thư viện sẽ ngay lập tức có hiệu lực trong các bảng tính sử dụng thư viện này. Nếu không, bạn sẽ phải lưu một phiên bản thư viện mới cho mọi thay đổi và cập nhật thủ công số phiên bản của thư viện trong mỗi bảng tính bằng cách sử dụng nó.

Vấn đề là, bạn cần phải viết một kịch bản trong mỗi bảng tính sử dụng thư viện của bạn, với các chức năng bộ xương như thế này:

function doSomething(){ 
    myLibrary.doSomething(); 
} 
+0

Dường như việc sao chép và dán tập lệnh vào bảng tính mới dễ dàng hơn ... –

+2

Có, mã sao chép có vẻ dễ dàng hơn việc tạo một hàm trong thư viện được chia sẻ ... cho đến khi bạn phải thay đổi nội dung nào đó trong mã của mình:) – antoine

+0

Tôi thực sự chỉ đảo ngược cách tôi đang làm việc. Bây giờ tôi có một tập tin xương với kịch bản và tôi chỉ dán tờ vào tập tin bộ xương. Kịch bản làm việc của nó và xóa trang tính. Vì vậy, bây giờ, nếu tôi phải sửa đổi mã, nó là tất cả trong cùng một vị trí. May mắn thay, trong trường hợp của tôi, tôi không phải lo lắng về hàng trăm tệp trước đây mà tôi đã chạy tập lệnh. –

1

Nó không thể theo cách này mà bạn đang suy nghĩ . Ít nhất, chưa (xem issue 40).

Tuy nhiên, tùy thuộc vào việc sử dụng tập lệnh của bạn, bạn có thể kết nối chúng "theo cách khó khăn" hoặc thậm chí tốt hơn, chỉ sử dụng một tập lệnh. Tập lệnh trên bảng tính chính có thể mở các tệp bảng tính khác và thực hiện công việc của mình "từ xa". Không yêu cầu tập lệnh phải được lưu trữ trên bảng tính để tương tác với nó (đọc/ghi trên đó). Bạn chỉ cần một tập lệnh được lưu trữ trên bảng tính nếu bạn định sử dụng trình kích hoạt sự kiện bảng tính tức là trên, mở, chỉnh sửa và gửi biểu mẫu.

Có thể bạn có thể phát triển giao diện người dùng đẹp cho tập lệnh trên trang cái và xuất bản dưới dạng dịch vụ. Sau đó, chỉ có một liên kết trên các bản sao để truy cập cùng một giao diện người dùng trên một tab trình duyệt khác. Thêm các tham số vào liên kết giao diện người dùng tập lệnh thậm chí có thể thích ứng với bảng tính cụ thể đang "kích hoạt" nó.

Vâng, đó là tất cả những gì tôi có thể tưởng tượng ngay bây giờ. Nhưng, thật không may, có một số trường hợp sử dụng mà chỉ không phù hợp với "cách giải quyết" tốt đẹp này. Đối với những người, người ta chỉ có thể sao issue 40 (đối với loại bỏ phiếu và theo dõi cập nhật) và hy vọng nó được phát triển sớm.

+0

Thanx, có lẽ tôi cần phải làm rõ cài đặt. Mỗi bản sao có một sự kiện onEdit và một số nút thực hiện điều gì đó (chủ yếu là các phạm vi sao chép) cho bảng tính cụ thể đó. Tôi nhận thấy rằng tôi cần phải cập nhật một số kịch bản, làm thế nào để làm điều này từ một nơi cho nhiều bản sao (tôi có một danh sách tất cả các phím của bảng tính liên quan). –

+0

Hiện không thể thực hiện điều đó ngay bây giờ. Bạn phải tự mở từng tập lệnh, dán mã mới và lưu. Có một số cách giải quyết bằng cách sử dụng UrlFetch để truy xuất mã từ xa và 'eval' có thể phù hợp với bạn, chúng được mô tả trong số 40 nhận xét. –

+0

Số phát hành 40 được cố định và đóng. –

0

Các giải pháp tôi đưa ra trong bối cảnh này là để có một trang web của Google, nơi Thầy Script được nhúng, và nơi mà các bảng tính được nhúng quá

Sau đó, kịch bản, đề cập đến một bảng tính chuyên dụng, ngoại hình đối với tên Trang Google, hãy tìm trong bảng tính Chính và nhận ID của bảng tính được nhúng trong Trang.

0

Tôi đã giải quyết vấn đề này khi sử dụng tập lệnh tự động tạo bảng tính.

Thông thường, tôi sẽ thêm trang tính vào bất kỳ bảng tính nào có tập lệnh có tên "Thông tin". Tôi sẽ sử dụng nó để lưu trữ thông tin quan trọng cho kịch bản. Trong tập lệnh tự động tạo nhiều bảng tính hơn, tôi theo dõi ID của trang tính đã tạo. Bằng cách này, tôi có thể nhanh chóng gọi tất cả các tờ "được liên kết" và tương tác với chúng bằng cách sử dụng cùng một tập lệnh. Nó thậm chí có thể là giá trị viết kịch bản trong một tờ, và giữ nó hoàn toàn tách biệt với tấm Master của bạn hoặc đó là trẻ em.

Hãy xem chức năng này, nó có thể cung cấp cho bạn một số ý tưởng.

SpreadsheetApp.openById(id)