我首先要说明的最终目标是显示我们的公司目录(我们的员工姓名/职位/分机号/办事处位置/电子邮件的列表),该目录位于Google表格中,位于我们的某个Google协作平台中的页面。
我尝试使用Google的嵌入功能,但它很有效......但它非常笨重,没有“排序”功能,而且看起来很奇怪。
我在3个月前从网上某个地方提取了一个Google Apps脚本,实际上确实让我感到高兴:
(这与目前在Google协作平台页面上显示的一样。因此,在此屏幕截图中,嵌入式工作表位于顶部。通过脚本导入的工作表位于下方。是的,它们都在同一页面上我正在测试!)
这是我使用的代码(我认为 - 我不记得我是如何实现的):
function myFunction() {
}
function onOpen(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
if(ScriptProperties.getProperty("page url") == null){
ss.addMenu("List page", [{name: "Create list", functionName: "create_list"},null,
{name: "Fetch list items", functionName: "fetch_items"}]);
}
else{
ss.addMenu("List page", [{name: "Push Items", functionName: "push_items"}]);
}
}
function create_list() {
var data = SpreadsheetApp.getActiveSheet().getDataRange().getValues();
var parent_page = Browser.inputBox("URL of the parent page:");
var title = Browser.inputBox("Choose a name for your list page:");
var data = SpreadsheetApp.getActiveSheet().getDataRange().getValues();
var list = SitesApp.getPageByUrl(parent_page).createListPage(title, title.split(' ').join(''), '', data[0]);
ScriptProperties.setProperty("page url", list.getUrl());
onOpen();
push_items();
}
function push_items(){
var done = false;
while(!done){
try{
var data = SpreadsheetApp.getActiveSheet().getDataRange().getValues();
var list = SitesApp.getPageByUrl(ScriptProperties.getProperty("page url"));
var list_items = list.getListItems();
for(i in list_items){
list_items[i].deleteListItem();
}
for(var i = 1; i < data.length; i++){
var item = list.addListItem(data[i]);
}
done = true;
}
catch(e){
}
}
SpreadsheetApp.getActiveSpreadsheet().toast(ScriptProperties.getProperty("page url"), "List page updated", 10);
}
function fetch_items(){
var url = Browser.inputBox("URL of your list page:");
var col_number = Browser.inputBox("Number of columns in the list:");
var data = new Array();
var list_items = SitesApp.getPageByUrl(url).getListItems();
for(i in list_items){
var row = new Array();
for(j = 0; j < col_number; j++){
row.push(list_items[i].getValueByIndex(j));
}
data.push(row);
}
SpreadsheetApp.getActiveSheet().getRange(1, 1, data.length, data[0].length).setValues(data);
}
[I do not take credit for writing this!]
所以我想问(因为这对我来说不再有意义)如果这是一个可行的Google Apps脚本代码,如果是这样,我如何实现它以同样类型输出Sheet数据格式如截图?
或者,是否有更好的方法在Google表格中显示此工作表数据?
答案 0 :(得分:0)
完全不同的替代方案是使用Romain Vialard's "awesome tables" gadget。它很棒......很棒,而且非常容易使用。此外,它承认过滤器......