7

Possiedo una WebApp che raccoglie i dati del sito di lavoro in un foglio di lavoro di Google Sheets e raccoglie anche le foto del sito di lavoro in una cartella di Google Drive che creo per ogni lavoro. Alcune, ma non tutte, le foto devono essere visibili in una cella in Fogli Google, in modo che il foglio possa essere stampato come parte di un rapporto sul completamento del lavoro.Qual è il modo giusto per inserire un'immagine di Drive in una cella Fogli programmaticamente?

Uso Google Picker per caricare file nella cartella specifica per il lavoro del sito di lavoro. Non sono sicuro del modo migliore per usarli da lì.

Ho avuto successo impostando una formula di cella come =IMAGE("hllp://i.imgur.com/yuRheros.png", 4, 387, 422), ma solo con immagini estratte da altrove sul web.

Utilizzare the permalink trick come questo =IMAGE("hllp://drive.google.com/uc?export=view&id=0B8xy-TdDgbjiFoOldUlLT091NXM", 4, 387, 422) non funziona; Penso che non tolleri il reindirizzamento dell'URL che Google fa su quei link.

L'altro modo in cui ho letto, ma non ancora provato, è di scrivere il blob effettivo nella cella. Tuttavia, sospetto che perderò qualsiasi controllo sulla successiva formattazione del rapporto.

Forse sto andando ad avere bisogno di registrare la specifica immagine in diversi modi in più celle:

  1. suo Google Drive tasto cancelletto
  2. sue dimensioni
  3. la sua posizione alternativa a imgur.com (o simile)
  4. suo blob

c'è un modo programmatico per ottenere URL finale reindirizzato di Google per un immagine, equivalente ad aprire l'immagine e copiare l'URL a mano? Si può fidarsi per sempre o cambia nel tempo?

Aggiornamento: Io sono sbagliato su = IMAGE ("hllp:? //drive.google.com/uc export = view id = & 0B8xy-TdDgbjiFoOldUlLT091NXM", 4, 387, 422) non funziona. È essenziale che l'immagine sia condivisa con "chiunque abbia il link", anche se il proprietario del foglio di calcolo è anche il proprietario dell'immagine.

Ho intenzione di registrare solo la chiave 1.hash e 2.dimensioni come soluzione, ma sarei lieto di sapere se qualcun altro ha un'idea migliore.

+0

ho solo fatto una domanda simile qui: http://webapps.stackexchange.com/questions/86081/insert-image-from -google-drive-in-google-sheets Per ora utilizzo Picasa per risolvere il problema, ma non è l'ideale in quanto gli URL delle immagini devono essere copiati uno per uno. – Jonny

risposta

3

i fatto uno script di due righe per utilizzare il link di condivisione di un'immagine in Google Drive.

  1. Vai a Strumenti> Editor di script.
  2. copiare, incollare il seguente codice
  3. Cliccare sulla corsa per il permesso

    function DRIVE_IMAGE(link){ 
        prefix_url = "https://docs.google.com/uc?export=download&"; 
        link.replace("open?", "uc?export=download&"); 
    } 
    

Utilizzando lo script:

  1. Copia il link di condivisione della vostra immagine in Google Drive.
  2. Vai a una cella
  3. inserire la formula

    =IMAGE(DRIVE_IMAGE("COPIED_LINK")) 
    
+0

Dovresti pubblicare la soluzione completa _here_ invece di collegarti ad essa. Mi rendo conto che il sito all'altra estremità del link è un sito Stack Exchange, ma cosa succede se quella domanda o la tua risposta sono state cancellate? Quindi questo non avrebbe molto senso da solo. –

+0

Questa sembra la risposta che stavo cercando, ma è tanto tempo fa, non ne ho più bisogno. Perché, ora, impostare per essere la risposta giusta? . . . bene Bhacaz :-) –

+0

Questo non funziona – Cooper

3

Supponendo che si ottiene l'ID della vostra immagine nel lettore, è possibile utilizzare un codice come qui sotto per inserire un'immagine in ultima fila di un foglio (l'URL è un po 'diverso dal solito):

... 
    var img = DriveApp.getFileById('image ID');// or any other way to get the image object 
    var imageInsert = sheet.getRange(lastRow+1, 5).setFormula('=image("https://drive.google.com/uc?export=view&id='+img.getId()+'")');// in this example the image is in column E 
    sheet.setRowHeight(lastRow+1, 80);// define a row height to determine the size of the image in the cell 
    ... 

vorrei suggerire che si controlla con attenzione le proprietà dei file che si sta cercando di mostrare condivisione: devono essere impostati su "pubblico" di spostati in una cartella che è anche "pubblicamente condivisa"

+0

Sì, grazie Serge, ho già quel po ', ma indubbiamente i futuri spettatori trarranno beneficio dal vedere come farlo. Poiché si tratta di un rapporto, in realtà devo usare = image (url, 4, width, height) per controllare le dimensioni. Calcolo il rapporto tra altezza e larghezza e poi ridimensiono per adattarlo alla minore delle due dimensioni della cella. –

+0

la https://drive.google.com/uc?export=view non funziona più per l'anteprima dell'immagine. Ho appena provato questo e non ho avuto una miniatura. – rahulserver

+0

ancora lavorando, inserire questo in una cella del foglio: = immagine ("https://drive.google.com/uc?export=view&id=0B3qSFd3iikE3TUFFLTJiOWYzNThhLTNhYzQtNGZlMi1hZjJhLWExNTZhNWY1MzEzYg") –